您知道脚本的执行顺序吗?您可能知道在Update()之前,Start()会被执行,但是哪个Start()会先执行呢?在Unity 3D中有一个小的东西叫做脚本执行命令,你应该知道它。
假设我们有三个这样的脚本:
Script1.cs
[C#]
纯文本查看 复制代码
1
2
3
4
5
6
7
8
|
using
UnityEngine;
public
class
Script1 : MonoBehaviour {
void
Start() {
Debug.Log(
"This is Script1"
);
}
}
|
Script2.cs
[C#]
纯文本查看 复制代码
1
2
3
4
5
6
7
8
|
using
UnityEngine;
public
class
Script2 : MonoBehaviour {
void
Start() {
Debug.Log(
"This is Script2"
);
}
}
|
Script3.cs
[C#]
纯文本查看 复制代码
1
2
3
4
5
6
7
8
|
using
UnityEngine;
public
class
Script3 : MonoBehaviour {
void
Start() {
Debug.Log(
"This is Script3"
);
}
}
|
然后,如果我将这三个脚本放入3个不同的游戏对象中,那么控制台窗口将会是什么样的呢?答案是,顺序是未知的,结果可能是随机的。以下是第一次执行脚本时的情况:

第一次执行
然后过了一会儿:

第二次运行
这是一个严重的问题,因为你希望你的游戏是可以预测的。这种行为也可能导致难以理解和重现问题。
脚本执行顺序
Unity有一个解决这个问题的办法。到编辑-项目设置-脚本执行命令,并将你的三个脚本添加到这个列表中,就像这样:

脚本执行命令100、200和300个订单号。带有较低数字的脚本将在更高的脚本之前执行。修改之后,记得点击Apply按钮,从现在开始,您的列表脚本将始终按照相同的顺序执行。