unity生命周期

unity的生命周期

都是有序的

1. 实例化与初始化阶段

Awake()

调用时机:当脚本实例被载入时调用,在场景加载时,每个对象的脚本实例创建后立即执行,无论脚本是否启用

用途:常用于进行基本的初始化操作,如变量赋值、查找组件引用等,因为此时所有对象的脚本实例都已创建,适合建立对象间的初始关联。

OnEnable()

调用时机:在对象被启用或者脚本被激活时调用 。如果对象在场景加载时就处于启用状态,会在 Awake 之后立即调用;若对象在运行时被禁用后又重新启用 ,此方法也会再次被调用。

用途:适合执行需要在对象启用时进行的操作,例如重置状态、订阅事件等。

2. 开始与更新阶段

Start()

调用时机:仅在脚本实例启用后的第一帧调用,且只会调用一次,在 Awake 和 OnEnable 之后执行

用途:常用于那些依赖于其他对象初始化完成的操作,因为此时场景中所有对象的 Awake 和 OnEnable 方法都已执行完毕。

FixedUpdate()

调用时机:以固定的时间间隔被调用,其调用频率由 Time.fixedDeltaTime 决定,默认值为 0.02 秒(即每秒 50 次)。它与帧率无关,适合进行物理模拟相关的操作。

用途:常用于处理物理计算,如刚体的移动、力的施加等,确保物理模拟的稳定性。

Update()

调用时机:每帧调用一次,其调用频率取决于游戏的帧率。帧率越高,Update 方法被调用的次数就越多。

用途:用于处理游戏中的常规逻辑,如玩家输入处理、对象的移动和旋转等。

LateUpdate()

调用时机:在 Update 方法调用之后的每帧调用。这意味着它会在所有 Update 方法执行完毕后才执行。

用途:常用于处理那些依赖于 Update 中对象状态变化的操作,例如相机跟随玩家角色,确保相机在玩家移动后再进行位置更新。

3. 渲染阶段

OnPreCull()

调用时机:在相机剔除场景中的对象之前调用。剔除 是指相机决定哪些对象在视野范围内,哪些对象不在视野范围内的过程

用途:可用于在相机剔除对象之前对场景进行一些预处理,如动态调整对象的渲染状态。

OnBecameVisible() 和 OnBecameInvisible()

调用时机:当对象对任何相机变得可见或不可见时分别调用。

用途:可以用于优化性能,例如当对象不可见时停止某些不必要的计算或动画。

OnWillRenderObject()

调用时机:当对象即将被渲染时,也就是在经过相机剔除确定对象处于视野范围内(不包括被Setactive.false的对象 ),且即将开始对该对象进行实际渲染操作之前,OnWillRenderObject() 会被调用。每个相机渲染该对象时都会触发此方法 ,可用于在对象渲染前进行特殊的渲染设置或效果处理。

用途:可用于在对象渲染前进行一些特殊的渲染设置或效果处理。

OnRenderObject()

调用时机:在所有常规渲染完成后调用,允许手动渲染自定义的图形或效果。

用途:用于实现自定义的渲染逻辑,如绘制额外的线条、图形等。

OnPostRender()

调用时机:在相机完成渲染后调用

用途:可用于在相机渲染完成后进行一些后处理操作,如添加屏幕特效。

4. 销毁阶段

OnDisable()

调用时机:当对象被禁用或者脚本被停用(如脚本组件被取消勾选)时调用。

用途:常用于执行一些清理操作,如取消订阅事件、释放资源等。

OnDestroy()

调用时机:当脚本实例即将被销毁时调用,例如当对象被删除或场景被卸载时。

用途:用于进行最后的清理工作,确保释放所有占用的资源

相关推荐
Octopus20771 小时前
【Godot】检查器的作用
游戏引擎·godot
Tatalaluola3 小时前
【Quest开发】手柄交互震动
unity·c#·游戏引擎·vr·quest
虾球xz3 小时前
游戏引擎学习第161天
人工智能·学习·游戏引擎
QO_GQ4 小时前
【unity】GPU顶点动画
unity·游戏引擎
配环境的帕鲁6 小时前
ROS下调用奥比中光dabai相机
数码相机
Unity粉末状在校生11 小时前
Unity知识总结——算法
算法·unity·排序算法
TO_ZRG11 小时前
xlua 运行原理
unity·c#
德林恩宝11 小时前
光场中的核心概念:Macro Pixel与SAI的深度解析与实例应用
数码相机
虾球xz15 小时前
游戏引擎学习第164天
学习·游戏引擎