时不时面试会提到,时间一长又时不时要找资料巩固一遍,当时索性就摘抄了下来,现在迁到自己博客里,顺便添点遇过的问题和自己的想法,也方便回顾;
Unity3d脚本从唤醒到销毁有一套比较完整的生命周期
Awake – Start – Update – FixedUpdate – LateUpdate – OnGUi – Reset – OnDisable – OnDestroy
1. Awake方法
-
在加载场景时运行,只执行一次(加载一次执行一次,或者生成一次执行一次);
-
在第一次执行Start、Update、FixedUpdate之前调用;
-
在脚本实例化的时候调用,不管是不是Enable,并且在生命周期中只会被调用一次;
-
在所有Start方法调用前调用;(一个场景中有多个脚本,多个脚本的Awake执行完毕之后,才开始按顺序依次执行各脚本的Start方法);
-
官方要求 尽量在Awake中进行初始化操作;
- 通过代码生成的对象,它的Awake方法根据调用生成位置来决定是否遵循上述规则;在其他对象的Awake中生成的,则遵循上述规则(主要是二、三条);
2. Start方法
-
游戏场景加载时调用,该方法内可写游戏场景初始化之类的代码;
-
Start在对象第一次enable之后,Update之前,start在脚本的生命周期中只可能被调用一次。
3. Update方法
每一帧渲染前调用,大部分游戏代码在这执行,除物理部分外;
跟平台帧数相关;
4. FixedUpdate方法
会在固定的物理时间步调调用一次,是基本物理行为代码执行的地方;
5.LateUpdate
晚于Update、FixedUpdate;
所有Update调用后调用相机渲染;
========================================================================================
可以使用Print()和Debug.Log()打印调试信息,Print()只能在Mono类中使用。Debug.Break()设置断点。