世间万物都有其规律和秩序,同样在Unity3D中调用系统函数也是有它的顺序的。
下面是在Unity3D中比较常见的系统函数和一般调用的顺序:
调用顺序 | 函数名 |
1 | void Awake() |
2 | void Start() |
3 | void Update() |
4 | void Fixedupdate() |
5 | void Lateupdate() |
6 | void OnGUI() |
7 | void Reset() |
8 | void OnDisable() |
9 | void OnDestroy() |
-
-
-
-
-
void Awake(){
}
1.Awake()是用来在游戏开始前初始化游戏中的变量和游戏状态的,自身的脚本在整个生命周期只被调用一次,它是在所有的游戏对象被初始化之后调用。
-
-
-
void Start() {
}
2.Start()在Update函数第一次被调用之前调用。在它的生命周期同样只被调用一次。总是在Awake()之后调用。Awake()和Start()的主要区别是:Start()只在脚本实例被激活时调用,你可以在一定的情况下适当地调整延迟初始化代码。
-
-
-
-
void Update(){
} //更新
void Fixedupdate(){
}//固定更新
void Lateupdate(){
}//晚于更新
这三个函数比较类似,都是每一帧都被调用,都是用来更新的。
3.Update()每一帧的时间不固定,假设第一帧与第二帧的时间为T1,第三帧与第四帧的时间为T2,那么T1与T2不一定相等。Update()受当前渲染的物体影响(比如游戏对象的数量等),有时快有时慢,帧率是不固定的。
4.FixedUpdate()每帧与每帧之前的时间间隔是固定的,不受渲染物体和帧率的影响,它是以固定的时间间隔被调用。一般用于多对一些物理属性的更新操作。
5.LateUpdate()是在所有Update函数调用后被调用。一般用于调整脚本的执行顺序。比如在Update()函数里更新主角的移动,就可以在LateUpdate()函数里更新跟随主角的摄相机的移动。
-
-
-
-
void OnGUI() {
}
6.OnGUI() 是在渲染和处理GUI事件时被调用。例如添加Button、Label、滑动条等会被使用,同样每帧执行一次。
-
-
-
void Reset(){
}
7.Reset()函数是在检视视图中的Reset重置按钮或者第一次添加该组件时被调用的,该函数只在编辑模式下被调用。一般用于在检视视图中给定一个常用的默认值。
-
-
-
void OnDisable() {
}
void OnDestroy(){
}
8.OnDisable()函数是在游戏物体被销毁时以及脚本被卸载时被调用,常用于清理代码。
9.OnDestroy()只会在预先被激活的游戏对象上被调用。常用于游戏物体的销毁。它们都不能用于协同程序。
这节就分享到这里。