首页 > 手游开发 > Unity3D > Unity3D 中Start()和Awake()方法有什么区别
2019
03-12

Unity3D 中Start()和Awake()方法有什么区别

Start和Awake方法的区别和使用

1. Awake

Awake is called when the script instance is being loaded.

Awake方法在脚本实例正在被加载的时候调用

Awake方法在脚本的生命周期中只调用一次

Awake方法会在所有object都初始化后调用,所以不用担心object还没有加载出来,GameObject的find方法可以找到引用

Awake方法的调用顺序在object之间时随机的

当所有对象的Awake方法都调用完成后,才会执行第一个Start方法

Awake方法就像构造函数一样

Awake方法不论脚本是否启用,都会调用

2. Start

Start is called on the frame when a script is enabled just before any of the Update methods is called the first time.

脚本被启用的时候,Start方法被调用,且是在Update方法之前被调用

 

Start方法在脚本生命周期中只调用一次

Start方法在脚本启用时才会调用,也就是启用的第一次才调用

3. OnEnable

This function is called when the object becomes enabled and active.

这个方法在对象被激活和启用时调用

 

OnEnable方法时在Awake之后Start之前调用,和他们不同的是,此方法可以调用多次。

4. Awake和Start方法的比较

大部分情况下,两个方法都可以用来初始化,但是当A的初始化要用到B的初始化时,我们可以把B的初始化放在Awake中,然后A在Start中使用B就没有问题了。

这是因为所有的Start方法的执行顺序都是随机的,假如A在Start中初始化了某个值,而B要获取这个值,而我们不知道哪个Start会先执行,可能B先执行,所以这样可能就报错了。

如果我们必须规定脚本的执行顺寻,我们可以按照下图进行设定。

最后编辑:
作者:搬运工
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。