Mobile wallpaper 1Mobile wallpaper 2Mobile wallpaper 3Mobile wallpaper 4Mobile wallpaper 5Mobile wallpaper 6
809 字
4 分钟
生命周期方法

概述#

在 Unity 中,每个继承自 MonoBehaviour 的脚本都有其特定的生命周期,包含一系列按特定顺序调用的方法。这些方法在不同的时间点被触发,用于执行不同类型的操作,如初始化、更新、清理等。

生命周期方法及调用顺序#

1. Awake()#

  • 调用时机:最早被调用,且每个脚本实例仅调用一次。
  • 用途:常用于单例模式的初始化,或进行一些无论组件是否激活都需要执行的基础设置。
  • 示例代码:
private void Awake()
{
Debug.Log("Awake");
}

2. OnEnable()#

  • 调用时机:在 Awake() 之后调用,当组件被激活时触发,且每个激活周期仅调用一次。
  • 用途:可用于在组件激活时执行一些初始化操作,如订阅事件等。
  • 示例代码:
private void OnEnable()
{
Debug.Log("OnEnable");
}

3. Start()#

  • 调用时机:在 OnEnable() 之后,Update() 之前调用,每个脚本实例仅调用一次。
  • 用途:适合用于设置一些初始值,因为此时所有对象都已初始化完成。
  • 示例代码:
void Start()
{
Debug.Log("Start");
}

4. FixedUpdate()#

  • 调用时机:以固定频率调用,在 Update() 之前执行,默认每隔 0.02 秒调用一次。
  • 用途:常用于处理物理相关的操作,因为物理模拟是以固定时间步长进行的。
  • 示例代码:
private void FixedUpdate()
{
Debug.Log("FixedUpdate");
}

5. Update()#

  • 调用时机:每帧调用一次,在 Start() 之后执行,每次调用与上次的时间间隔可能不同。
  • 用途:用于处理游戏中的大多数逻辑更新,如玩家输入处理、物体移动等。
  • 示例代码:
void Update()
{
Debug.Log("Update");
}

6. LateUpdate()#

  • 调用时机:在每次 Update() 之后紧接着调用一次。
  • 用途:常用于处理需要在所有 Update() 操作完成后执行的任务,如相机跟随等。
  • 示例代码:
private void LateUpdate()
{
Debug.Log("LateUpdate");
}

7. OnDisable()#

  • 调用时机:与 OnEnable() 相反,当组件失活时调用。
  • 用途:可用于在组件停用前执行一些清理操作,如取消事件订阅等。
  • 示例代码:
private void OnDisable()
{
Debug.Log("OnDisable");
}

8. OnDestroy()#

  • 调用时机:当脚本所附着的对象被销毁后调用一次。
  • 用途:用于进行最后的清理工作,如释放资源等。
  • 示例代码:
private void OnDestroy()
{
Debug.Log("OnDestroy");
}

代码#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace TimeGhost
{
public class test : MonoBehaviour
{
private void Awake() // 最早调用,只调用一次,单例模式
{
Debug.Log("Awake");
}
private void OnEnable() // 组件激活时调用,在awake之后调用,只调用一次
{
Debug.Log("OnEnable");
}
// Start is called before the first frame update
void Start() // 在update之前调用,只调用一次,在onenable之后调用,可以在此设置一些初始值
{
Debug.Log("Start");
}
// Update is called once per frame
void Update() // 每帧调用一次,在start之后调用,每次调用与上次时间间隔不相同
{
Debug.Log("Update");
}
private void LateUpdate() // 在每次update之后紧接着调用一次
{
Debug.Log("LateUpdate");
}
private void FixedUpdate() // 固定频率调用,在update之前调用,每隔固定时间调用一次默认0.02s
{
Debug.Log("FixedUpdate");
}
private void OnDisable() // 与onenable相反,组件失活时调用
{
Debug.Log("OnDisable");
}
private void OnDestroy() // 被销毁后调用一次
{
Debug.Log("OnDestroy");
}
}
}
生命周期方法
https://mikufun.dpdns.org/posts/生命周期方法/
作者
Roxy-DD
发布于
2025-12-06
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

封面
Sample Song
Sample Artist
封面
Sample Song
Sample Artist
0:00 / 0:00