当前位置:   article > 正文

Unity学习笔记之生命周期函数_unity 之生命周期

unity 之生命周期

概念

生命周期函数,是系统定义好的,运行时自动调用,但需要继承 MonoBehaviour 类并挂载到游戏对象上才能使用。生命周期函数就是该脚本对象依附的GameObject对象从出生到消亡整个生命周期中会通过反射自动调用的一些特殊函数。正是因为继承了 MonoBehaviour 这个类,Unity 才能依次调用我们的脚本代码,执行游戏逻辑。

顺序

详解

(1)Reset()

这个函数会在用户首次添加该组件时或单击 Reset 按钮时被调用,且只在编辑器生效。可应用于大批量生成修改编辑器节点

调用情况:此函数只能在程序不运行时调用,
调用时间:当脚本第一次挂载到对象身上,或使用Reset命令调用。
调用次数:此函数只会调用一次;作用:初始化脚本的各个属性

(2)Awake()

调用情况:1.在调用场景时,
2.GameObject从未激活状态变为激活状态
3.在初始化使用Instantiate创建GameObject之后
调用时间:在脚本实例的生存期间内
调用次数:仅调用一次;作用:Awake代替构造函数来进行初始化

(3)OnEnable()

调用情况:依附的GameObject对象每次被激活时调用。
调用时间、次数、作用:每次GameObject对象或脚本被激活时调用一次;重复赋值;变为初始状态

(4)Start()

调用情况:进行第一帧跟新之前才会执行,只有在GameObject被激活后才会被调用
在Awake之后Update之前执行,方便控制逻辑的先后调用顺序

(5)FixedUpdate()

主要用于物理更新,每个固定时间间隔执行。时间设置在Project setting—>Time—>Fixed Timestep中设置。

1.是帧独立的,在每一固定时间间隔调用

2.主要用于物理的运算更新

3.只有在脚本被激活的时候才会被调用

4.时间间隔可在项目设置中修改(默认0.02秒)

(6)Update()

主要用于处理游戏核心逻辑更新
实时更新数据,接受输入数据,每帧调用,每秒60次左右。

1.每帧调用一次(帧敏感),调用次数取决于游戏运行时的帧率

2.主要用于不是基于物理运算的更新,比如控制输入,计算数值,状态更新,时间计数和插值计算等

3.只有在脚本被激活的时候才会被调用

(7)LateUpdate()

稍后更新函数,在所有 Update 执行完后调用,帧间隔时间和 Update 一样

一般用于处理摄像机位置更新相关的内容,Update和LateUpdate之间,Unity进行了一些处理,对动画相关的更新,影响渲染的结果,如果在Update中更新摄像机,即摄像机位置变化后再更新动画。可能会出现渲染的错误,其运行帧率与Update相同。

(8)OnGUI()

在渲染和处理 GUI 事件时被调用,每帧都执行

(9)OnDisable()

当对象被禁用时调用,脚本被禁用时,游戏对象被销毁时调用。

当脚本被禁用时调用一次,当脚本反复被禁用或启用,则反复调用 OnDisable 和 OnEnable
作用:对于一些状态的重置,资源回收与清理

(10)OnApplicationQuit()

在程序退出之前所有游戏对象都会调用这个函数
在编辑器中用户终止播放模式时调用
在网页视图关闭时
满足以上情况时调用一次,用于处理游戏退出后的一些逻辑

(11)OnDestroy()

当脚本被销毁时被调用,只会在被激活的物体上调用,对象存在的最后一帧更新完之后的所有Update函数执行完之后执行。
用于销毁一些游戏物体
Destroy(GameObject,time)

注意

物体被禁用时,Awake 和 Start 是不被执行的,当物体被多次禁用和启用,其 Awake 和 Start 也仅执行一次,而 OnEnable 和 OnDisable 则会被多次调用。当程序退出时,若对象处于启用状态,程序会先禁用,再销毁。

当游戏对象被禁用(从一开始就被禁用到结束),Destroy 不会被监听
若刚开始被禁用然后解禁又禁用,或开始没有禁用,运行之后禁用了,Destroy 还是会被监听

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/682881
推荐阅读
相关标签
  

闽ICP备14008679号