Unity3D脚本的生命周期(执行顺序)
Unity脚本中有许多固定的函数
例如Start();Update();
而这些函数都有固定的执行顺序
搞清楚这些函数的执行顺序
对于我们理清代码的逻辑就显得尤为重要
举个简单的例子
//脚本A public static int a = 1; void Start(){ a = 2; } //脚本B void Start(){ Debug.Log(A.a); }
这时,我们的原意是将重新赋值后的a打印出来
但是,打印的结果却是1,而不是2
这是因为在脚本B的Start()函数启用之前
脚本A的Start()函数也没有启用
改正的思路,便是让脚本A的赋值更早执行
这样脚本B就可以调用到脚本A赋值之后的值
例如,将赋值放在Awake()中进行
//脚本A public static int a = 1; void Awake(){ a = 2; }
这样,脚本B就可以在Start()函数中调用已经在Awake()函数中赋值过的a
下面,给出官网的完整生命周期
注意:
Start这个函数。并不是只会调用一次!
而我们经常习惯于在Start中注册事件。
这样就导致事件重复注册,而且问题很难发现!
声明:此博客为个人学习之用,如与其他作品雷同,纯属巧合,并请明示指出