生命周期函数
一、帧的概念
游戏的本质
就是一个死循环
,每一次循环处理游戏逻辑就会更新一次画面
,之所以能看到画面在动,是因为切换画面的速度达到一定
时,人眼就认为画面是流畅
的。
一帧就是执行一次循环
![]()
个人多年游玩游戏来说,我最低只能接收60帧,不然会头晕。
Unity底层已经帮助我们做好了死循环,我们需要学习Unity的生命周期函数,利用它们做好规则来执行我们的游戏逻辑就行了。
二、生命周期函数的概念
所有继承MonoBehavior的脚本 最终都会挂载到Game Object上。
- 生命周期函数 就是该脚本依附的GameObject对象从出生到消亡整个生命周期中会通过
反射自动调用的一些特殊函数
。- Unity帮助我们记录了一个GameObject对象依附了哪些脚本。Unity会自动的得到这些GameObject对象,通过反射去执行一些固定名字的函数。
三、生命周期函数
注:生命周期函数的访问修饰符一般为
private和protected
。注:因为不需要外部去调用生命周期函数,都是Unity自己帮助我们调用的。
1. Awake
当对象(自己这个脚本类对象)被 创建时才会调用。
类似构造函数
的存在 我们可以在一个类对象 该创建 时 进行一些初始化操作。
2. OnEnable
依附的
GameObject对象每次激活时
调用。
- 对于我们来说 想要当一个对象被激活时 进行一些逻辑处理 就可以写在这个函数。
3. Start
- 和Awake区别:
- wake函数在对象初始化之后立刻就会调用,换句话说,对象初始化之后第一调用的函数就是Awake;而Start是在对象初始化后,第一次Update之前调用的,
- 在 Start中进行初始化不是很安全,因为它可能被其他自定义的函数抢先。
Awake
不管脚本是否enabled
都会被调用;而Start如果对象被SetAcive(false)或者enabled= false了是不会被 调用的。- 如果
对象(GameObject)本身没激活,那么Awake,Start都不会调用。
4. FixedUpdate
- 它主要是用于 进行物理更新。
- 它是每一帧的执行 但是 这里的帧 和游戏的帧有点不同。
- 固定时间执行,间隔时间可以在project setting中的Time里去设置的。
- 主要用于物理相关,如碰撞检测等。
5. LateUpdate
- 一般是用于
处理 摄像机位置
相关内容的- Update和LateUpdate之间 ,Unity进行了一些处理,处理我们动画相关的更新。
- 如果在摄像机变化后再去处理动画,可能会造成
渲染错误
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 游戏开发笔记!