Start()和Awake()的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/centor/article/details/79628067

在Unity3d游戏程序运行时所有附加到游戏对象上的脚本组件都会运行, Awake方法和Start方法都只会运行一次,多用于数据初始化。 这两个方法的执行顺序是: 先执行Awake方法,再执行Start方法,之后才是Update().

当脚本设置为不可用时
Awake方法仍然会执行一次,而Start方法则不会执行

在游戏开始之前Awake用来初始化变量或游戏状态。 Awake方法在脚本生命周期中只会被调用一次。Awake方法在所有游戏对象初始化完之后才会被调用,所以可以安全的在Awake方法中引用或请求其它游戏对象数据。 所有游戏对象的Awake方法调用顺序是随机的。所以应该全用Awake方法来设置脚本之间的引用,而使用Start方法来互相来回传递信息。Awake方法总是在任何的Start方法调用之前调用。Awake不能做为协同(coroutine)使用

在Unity中使用Awake方法做为初始化器,而不是使用C#语法中的构造函数。在构造函数中进行初始化组件的序列化状态是未定义的。就像构造函数一样,Awake只调用一次。

Start是在对象被第一次enable之后,在Update之前调用的,Start在脚本的生命周期中也只可能被调用一次。Start可能不会被立刻调用,比如我们之前没有让其enable,当脚本被enable时,Start才会被调用。

猜你喜欢

转载自blog.csdn.net/centor/article/details/79628067