unity生命周期

以下是 Unity 中脚本(继承 MonoBehaviour 的类)的生命周期详解,涵盖核心事件函数的执行顺序、触发条件和常见用途:


一、Unity 生命周期核心流程图

在这里插入图片描述


二、核心阶段与事件函数

1. 初始化阶段

Awake()
触发时机:脚本实例被创建时(无论脚本是否启用)。
用途:初始化变量、获取组件引用(如 GetComponent)。
注意:不同对象的 Awake 调用顺序不确定,需避免跨对象依赖。

OnEnable()
触发时机:脚本首次加载 对象从禁用(SetActive(false))变为激活时。
用途:注册事件、启动协程、恢复状态。

Start()
触发时机:在脚本首次 Update 前,且仅当脚本启用时调用一次。
用途:依赖其他对象的初始化(如获取其他组件的引用)。

2. 更新阶段

FixedUpdate()
触发时机:固定时间间隔(默认 0.02s,可调整 Time.fixedDeltaTime)。
用途:处理物理逻辑(如 Rigidbody

### Unity 生命周期详解 #### Awake 方法 Awake 是在脚本实例的生存期内由 Unity 只调用一次的方法。该方法用于替代构造函数进行初始化操作,因为 Unity 中组件的初始化并不依赖于传统的构造函数机制[^1]。 ```csharp void Awake() { // 初始化代码写在这里 } ``` #### OnEnable 方法 每当 GameObject 对象或其上的脚本被激活时都会触发 `OnEnable` 方法。这不仅发生在首次创建对象时,也包括当对象从非活动状态切换至活动状态之时][^[^23]。 ```csharp void OnEnable() { // 当游戏对象变为活跃状态时执行此代码 } ``` #### Start 方法 Start 函数会在第一次更新之前被执行,并且只运行一次。它通常用来完成那些需要等待所有资源都准备好才能做的工作,比如获取其他组件引用等。 ```csharp void Start() { // 这里可以放置一些延迟初始化逻辑 } ``` #### Update 和 FixedUpdate 方法 Update 每帧都被调用,适用于处理每帧都需要做的事情;而 FixedUpdate 则按照固定的时间间隔调用,主要用于物理计算相关的任务。 ```csharp void Update() { // 每帧执行的操作放在此处 } void FixedUpdate() { // 物理引擎相关的工作应该放在这个函数里面 } ``` #### OnDestroy 方法 当一个对象即将被销毁前会自动调用 OnDestroy 。这对于清理不再使用的资源非常有用,例如取消订阅事件监听器或者释放网络连接等等。 ```csharp void OnDestroy() { // 清除工作可在此实现 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芊芊的君子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值