Unity不同脚本之间的执行顺序
我们都知道,Unity中某个脚本的执行顺序是Awake、Start、Update、LateUpdate等,但是不同的脚本之间的执行顺序是怎样的呢?
例如我有两个脚本Script1和Script2,那么这两个脚本的Awake执行顺序是怎样的呢?
要知道真相我们就必须了解Unity后台的运行原理,其实Unity后台是单线程执行的,所谓的协程都是伪多线程。不同脚本的Awake在后台的执行真相是这样的:
void Awake()
{
Script1.Awake();
Script2.Awake();
}
手动设置脚本执行顺序:
1、先在project窗口选中一个脚本文件,然后在Inspector卡中显示如下:
2、点击右上角Execution Order显示如下:
这样设置之后需要注意,在先执行的脚本中引用后执行的脚本会报错
下方数值越小的排在越前面脚本将率先执行,如果没有设置的脚本将按默认的顺序执行。
默认情况下脚本的执行顺序不可控,所以最好别在一个脚本初始化中对其他脚本引用,除非你确定该脚本已经实例化