Unity不同脚本之间的执行顺序
来源:互联网 发布:男生用什么护肤品知乎 编辑:程序博客网 时间:2024/06/04 20:22
我们都知道,Unity中某个脚本的执行顺序是Awake、Start、Update、LateUpdate等,但是不同的脚本之间的执行顺序是怎样的呢?
例如我有两个脚本Script1和Script2,那么这两个脚本的Awake执行顺序是怎样的呢?
要知道真相我们就必须了解Unity后台的运行原理,其实Unity后台是单线程执行的,所谓的协程都是伪多线程。不同脚本的Awake在后台的执行真相是这样的:
后台Awake() { 脚本0Awake(); 脚本1Awake(); ........ }
Start、Update等函数也是相同的道理,那么问题就来了,这么多脚本,他们的执行顺序到底是怎样的呢?
这个关系我还真没搞明白其中的规律,不过Unity提供了一个设置不同脚本之间执行顺序的功能
1、先在project窗口选中一个脚本文件,然后在Inspector卡中显示如下:
2、点击右上角Execution Order显示如下:
3、点击加号添加你想要排序的脚本文件。
4、拖动脚本文件进行排序。
这样脚本就会按照你排的顺序顺次进行初始化。
我们之所以要设置脚本间的执行顺序主要是为了避免下面这种情况
public class Script1 : MonoBehaviour { void Awake () { GameObject.CreatePrimitive(PrimitiveType.Cube); } }
public class Script2 : MonoBehaviour { void Awake () { GameObject go = GameObject.Find("Cube"); Debug.Log(go.name); } }
这样如果Script2在Scirpt1之前执行的话,就会报错。因此需要对脚本初始化顺序进行设置。
但是还有另外一种方法来解决上述问题:
那就是在Script1的Awake创建cube,在Script2的Start访问cube,这样就不会出错啦。
因为后台的也是严格按照Awake早于Start的顺序执行的,也就是先把所有脚本的Awake执行完,然后再执行所有脚本的Start。
转自:
http://blog.csdn.net/alexander_xfl/article/details/41577625?utm_source=tuicool&utm_medium=referral
- Unity不同脚本之间的执行顺序
- Unity不同脚本之间的执行顺序
- [Unity-20] Unity不同脚本之间的执行顺序
- Unity脚本的执行顺序
- Unity脚本的执行顺序
- Unity脚本执行顺序
- Unity脚本执行顺序
- unity脚本执行顺序
- Unity脚本执行顺序
- Unity 脚本执行顺序
- 深入理解Unity脚本的执行顺序
- Unity脚本函数的执行顺序
- 深入理解Unity脚本的执行顺序
- Unity 添加脚本后的执行顺序
- Unity脚本事件执行的顺序
- unity 脚本的执行先后顺序
- Unity脚本事件执行的顺序
- unity脚本执行顺序详解
- 二维码扫描与生成二维码
- 实现HTML转PDF & 多个PDF合并
- 今天找回账号,但博客内容都丢失了
- HDU 4720 Naive and Silly Muggles(三角形最小覆盖圆)
- Android自动解析html带图片,实现图文混排
- Unity不同脚本之间的执行顺序
- Vue DevTools可使用修正方法
- linux中Graphics2D 中文乱码的解决办法
- 正则表达式,只能输入数字且最多两位有效数字,数字位数最多五位(限制的位数可自行调整)
- 数组
- MySQL单表查询优化技巧汇总
- LeetCode-49-Group Anagrams list_to_string、string list
- HDU-6216 A Cubic number and A Cubic Number
- BeX5使用疑难总结