【问题标题】:Instantiated prefab loses script reference实例化的预制件丢失脚本引用
【发布时间】:2018-05-17 21:24:04
【问题描述】:

我的预制件不会保留移动操纵杆参考。如果我在运行时重新添加引用,一切正常,但是一旦我从屏幕上删除它或运行项目,实例化的预制件将丢失引用。

我肯定会在预制件上点击 Apply,但本质上,它的行为就像我没有点击一样。

这里添加了引用...

但在实例化的对象上……

请注意,我拖入场景的船对象仍然有引用,但实例化的船没有。

我已经尝试将操纵杆容器作为预制件而不是预制件。

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    这是预期行为

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

    您必须在实例化预制件时分配对脚本的引用。您可以拨打instance_obj.GetComponent<Move>().moveJoystick = ...

    【讨论】:

    • 这看起来有些不同,因为他正在尝试访问脚本,而不是场景中的游戏对象。
    • 他正在访问场景中游戏对象内的脚本(画布内的 JoystickContainer),因此这是预期的行为案例。
    • 是的,你是对的。我错过了那部分。如果他不能做对,让他更容易。首先将一个名为“JoystickContainer”的标签添加到您的 JoystickContainer 游戏对象中。然后在您的“移动”脚本中,将 MoveJoystick 变量设置为此; Movejoystick = GameObject.FindWithTag("JoystickContainer");这肯定会奏效。
    • 它似乎不起作用,因为该变量是游戏杆类型,与 GameObject 不匹配。仍在努力。
    • 你需要在<>里面的操纵杆脚本类型的GameObject上调用GetComponent<>()
    猜你喜欢
    • 2020-01-01
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多