【Unity】浅谈Awake函数与Start函数之间的区别

来源:互联网 发布:php sqlite3 安装 编辑:程序博客网 时间:2024/06/05 10:05

个人觉得资料3讲得比较清楚

Awake函数

Awake在MonoBehavior创建后就立刻调用,Start将在MonoBehavior创建后在该帧Update之前,在该Monobehavior.enabled == true的情况下执行。

在Awake中我们调用了enabled = false; 禁止了这个MonoBehavior的update。由于Start, Update, PostUpdate等属于runtime行为的一部分,这段代码将使Start不会被调用到。


Start函数

Start仅在Update函数第一次被调用前调用。Start在behaviour的生命周期中只被调用一次。它和Awake的不同是Start只在脚本实例被启用时调用。


DBtest.cs

LTLeg.cs


LTLeg.cs文件要调用DBtest.cs的公共变量hello,在DBtest.cs的文件把hello的初始化放入start函数中,此时LTLeg.cs文件并没有识别到,

并且LTLeg.cs文件中Debug.Log("--"+dbtest.hello +"--");的dbtest.hello为空,并没有显示


DBtest.cs中把hello的初始化放入awake函数中,发现

发现是正常显示的


综上所示,可得出结论,当函数A中的变量被其他的函数B调用的时候,把变量的初始化放入Awake函数,是可以达到预期的效果的

把函数A中当前函数A调用(仅且只在自己的函数A当中使用)变量的时候,放在Start函数初始化函数A的变量(只在A函数使用),可以节省时间


当然有的时候需要使用到Find函数,这种耗时长的操作的时候,还是放在Awake函数中比较好


参考资料:

1.Unity中Awake与Start函数的区别

2.Unity3d中默认函数调用顺序(MonoBehaviour)

3.Unity3D脚本中Start()和Awake()的区别






0 0