现阶段对于我来说最常用的是Start(),OnEnable()和OnDisable()。
OnEnable()的优先级高于Start(),每次Enable的时候OnEnable()都会加载,而Start()只会加载一次。
OnDisable()只有在Disable一个Component的时候才会加载。
很容易测试一下:
1 | void Start() |
直接运行后显示:
在GameObject 里面Disable这个Component以后会显示:
再次Enable以后,加上之前的,完整的Console信息是:
Unity官方文档里也有一张详细的图表说明原生函数的顺序:
这里比较有用的一点是Awake()要比OnEnable()执行的优先级靠前,但是Awake()和Start()一样都是只执行一次。
Awake()的优先级最高是因为,它是当一个GameObject Active以后就会立刻执行,而其他的都是在Component Enable以后执行。
强调一下:Active和Enable的区别在于,Active是针对GameObject的,Enable是针对Component的: