播放器预制脚本执行顺序

时间:2018-06-19 17:45:59

标签: unity3d order-of-execution

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

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

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

我想知道是什么原因导致这种行为以及如何避免这种行为,希望我的解释很清楚。

谢谢。

1 个答案:

答案 0 :(得分:3)

我相信一般规则是“无论加载顺序如何”。

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

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

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