目录
一、脚本生命周期简介
- Unity脚本从唤醒到销毁的过程
- 消息:当满足某种条件Unity引擎自动调用的函数(早期也称作必然事件),我们要了解的就是这些函数是什么、何时执行、什么时候适合使用。
- 参考链接:
- http://docs.unity3d.com/Manual/ExecutionOrder.html
- https://connect.unity.com/doc
特性:
在脚本中编写的字段与在编译器中显示的关系
- C#类一般由字段、属性、构造函数、方法组成
- 脚本中编写的属性,在编译器中看不到
- 不要在脚本中写构造函数,初始化写在Awake()或Start()里
- 所以在Unity脚本中一般只写字段和方法
二、常用的脚本生命周期Massage
初始阶段
Awake()和Start()
Awake()可以判断当满足某种条件执行此脚本:
//脚本启用
this.enable = true
//脚本禁用
this.enable = false
由于物体载入时一定会执行Awake(),可以且只能在Awake()中判断此脚本是否启用,如果不启用,Start()也就不会执行了。
OnEnable()
- 每当脚本对象启用时调用
- 与上面两种不同的是,上面两种方法只会调用一次,OnEnable()每当脚本被启用一次就会调用一次。
物理阶段
FixedUpdate()
因为游戏逻辑常常放到Update()中,所以物理操作的代码也常常一起放到Update()中
游戏逻辑
Update()
LateUpdate()
在Update()后面执行,但与Update()相差一帧,基本看不出来。适合做跟随逻辑。
输入事件
OnMouseDown()
鼠标每次点击物体时触发,但这个物体必须有碰撞器组件才能点击。
场景渲染
被摄像机看见(或看不见)的那一帧执行。
结束阶段
OnDisable()
当脚本对象或游戏对象每次禁用都会调用一次。
三、脚本生命周期流程图