预制件实例化后失去脚本引用

5
我的预制件无法保留移动摇杆的引用。如果我在运行时添加引用,则一切正常,但是一旦将实例化的预制件从屏幕上删除或运行项目后,引用就会丢失。
我确保在预制件上点击了“应用”,但实际上它似乎没有起作用。
引用在这里添加...

enter image description here

但已经实例化的对象却消失了...

enter image description here

请注意,我拖入场景中的船只对象仍然具有引用,但实例化的船只没有。
我已经尝试过将操纵杆容器作为预制件和非预制件。
1个回答

10

这是预期行为

预制件无法保留场景中对象的引用,因为在它们实例化时,不能保证该对象仍然存在。

您需要在实例化预制件时将引用分配给脚本。您可以通过调用instance_obj.GetComponent<Move>().moveJoystick = ...来实现此操作。


1
看起来这是不同的东西,因为他试图访问一个脚本,而不是场景中的游戏对象。 - FaTaLL
1
他正在访问场景中的游戏对象内的脚本(画布内的JoystickContainer),因此这是预期的行为情况。 - user9596240
2
是的,你说得对。我错过了那一部分。如果他做不对,让我们让它更容易。首先,在您的JoystickContainer游戏对象中添加一个名为“ JoystickContainer”的标记。然后在您的“ Move”脚本中,将MoveJoystick变量设置为此值; Movejoystick = GameObject.FindWithTag(“ JoystickContainer”); 这肯定会起作用。 - FaTaLL
似乎无法正常工作,因为变量的类型是操纵杆,而不是游戏对象。仍在努力解决中。 - tintyethan
1
你需要在括号<>中填入摇杆脚本的类型,并在该游戏对象上调用GetComponent<>()函数。 - Draco18s no longer trusts SE
明白了。谢谢。 - tintyethan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接