Unity3D ----- 生命周期

这是一篇关于Awake/OnEnable/Start三个函数的详细执行顺序的博客。超级赞!http://www.cnblogs.com/xpvincent/p/3178042.html
 
 
unity的生命周期就是上图。途中也介绍了每个函数的调用。
 
这里详细说下会经常用到的方法,和一些有疑惑的方法。
 
1.Awake(初始化函数,在游戏开始时系统自动调用),一般用来创建变量。
2.Start(初始化函数,待Awake函数运行完毕Update函数运行前调用),一般用来给变量赋值。
 
总结来说,在处理对象的reference设置等事情时,放在Awake()中,然后将这些reference的Object赋值设置放在Start()中来完成。
 
【引用】
当我们为MonoBehavior定义了[ExecuteInEditMode]后,我们需要关心Awake和Start在编辑器中的执行状况。
[ExecuteInEditMode]属性表示在编辑模式下运行。
  1、当该MonoBehavior在编辑器中被赋于给GameObject的时候,Awake, Start 将被执行。
  2、当Play按钮被按下游戏开始以后,Awake, Start 将被执行。
  3、当Play按钮停止后,Awake, Start将再次被执行。
  4、当在编辑器中打开包含有该MonoBehavior的场景的时候,Awake, Start将被执行。
 
 
Awake()
 
当一个脚本被载入是调用,在整个生命周期它仅被调用一次。
Awake用于在游戏开始之前初始化变量或游戏状态。在脚本整个生命周期内它仅被调用一次.Awake在所有对象被初始化之后调用,所以你可以安全的与其他对象对话或用诸如 GameObject.FindWithTag 这样的函数搜索它们。每个游戏物体上的Awke以随机的顺序被调用。因此,你应该用Awake来设置脚本间的引用,并用Start来传递信息。Awake总是在Start之前被调用。它不能用来执行协同程序。   —— 来自圣典
 
Start()
Start仅在Update函数第一次被调用前调用。Start在behaviour的生命周期中只被调用一次。它和Awake的不同是Start只在脚本实例被启用时调用。
你可以按需调整延迟初始化代码。Awake总是在Start之前执行。这允许你协调初始化顺序。      —— 来自圣典
 
 
posted @ 2015-12-09 14:24  王赛  阅读(529)  评论(0编辑  收藏  举报