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

 

下面,给出官网的完整生命周期

41DEF221-DA2C-4965-AE8E-395AC0013902

 

注意:

Start这个函数。并不是只会调用一次!

而我们经常习惯于在Start中注册事件。

这样就导致事件重复注册,而且问题很难发现!

 

声明:此博客为个人学习之用,如与其他作品雷同,纯属巧合,并请明示指出

posted on 2017-02-07 09:24  Lumious  阅读(878)  评论(0编辑  收藏  举报

导航