2

不确定是什么问题,所以我将尝试描述结果。

我有一个播放器对象和一个与播放器脚本中的变量相对应的 UI 栏,一切都按预期工作,然后我删除我的播放器对象并将其替换为播放器的相同预制件,我将播放器对象重新分配给所有字段在先前附加的检查器中。

现在,当我点击播放时,UI 就像在播放器控制器脚本之后执行 UI 脚本一样,并且一些值已关闭,为了测试这一点,我更改了“脚本执行顺序”面板中的执行顺序,这似乎解决了这个问题,但我不希望这样做。

我想知道什么会导致这种行为以及如何避免它,希望我的解释足够清楚。

谢谢。

4

1 回答 1

3

我相信一般规则是“无论它们被加载的顺序是什么”。

这意味着场景中的脚本将在附加到预制件实例化到场景中的脚本之前运行,这些脚本将在从资产包加载的脚本之前运行,资产包在其他场景加载的脚本之前运行(当然,假设预制件在资产包加载,这本身发生在场景转换之前)。

正如您所发现的,这使得它......不可靠。它本质上是一个List<Component>Unity 跟踪的单一实例,将新创建的脚本实例添加到末尾,并根据需要对其进行迭代以调用相关函数。

那么,您拥有的唯一控制是手动执行顺序设置(如您所见)或不依赖 Unity 的脚本处理程序,而是使用您自己的代码手动执行。

于 2018-06-19T20:51:49.503 回答