首页 > 解决方案 > 如果脚本在另一个场景中,如何将对象分配给脚本?

问题描述

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

游戏和主菜单

在运行游戏之前

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

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

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

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

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

然后缩放脚本中缺少 NAVI:

运行游戏后,玩家与 NAVI 孩子在另一个场景中

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

标签: unity3d

解决方案


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

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


推荐阅读