【问题标题】:How can I assign the object to the script if the script is on another scene?如果脚本在另一个场景中,如何将对象分配给脚本?
【发布时间】:2020-05-24 13:21:40
【问题描述】:

在开始游戏之前,我在编辑器中有两个场景:

游戏和主菜单

在底部的对象 GameObject 上,我有一个脚本 Scaling。

如果我将 Cube 拖到 Object To Scale 字段并运行游戏,它将正常工作。我可以按 G 键,它会放大/缩小立方体。

如果我将播放器下的 NAVI 拖到缩放脚本字段 Object To Scale 然后运行游戏时 NAVI 被破坏,因为现在播放器(克隆)在另一个场景中。

运行游戏时立方体在同一场景中。

现在运行游戏后的截图: 立方体和带有缩放脚本的游戏对象仍在游戏场景中。 但是播放器现在在 DontDestroyOnLoad 场景中:

然后缩放脚本中缺少 NAVI:

Player is prefab 也许我应该将 Player prefab 拖到脚本中,然后在脚本中找到 NAVI child ?而是拖动 NAVI。

【问题讨论】:

  • 我不确定我是否理解正确,但有一次搜索 GameObject.Find("<name>") 可以帮助你

标签: unity3d


【解决方案1】:

似乎场景中的播放器对象被销毁,并且从预制件中实例化了一个新播放器。由于场景中的原始播放器被破坏,对原始 NAVI 的引用也丢失了。如果您希望脚本引用克隆播放器上的 NAVI,则必须将其附加到播放器预制件,否则必须在运行时搜索和引用它。

所以是的,您应该将它拖到播放器预制件上的 NAVI 对象,而不是场景中的播放器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多