首页/ 第 5 章 · C# 编程基础/ 第 71 课
LESSON 71 · C# 编程基础

Unity 脚本生命周期(Awake/Start/Update)

生命周期已掌握。下一课深挖 Update 与 FixedUpdate 的区别。

⏱ 约 15 分钟📊 难度:入门🗂 第 5 章 · C# 编程基础📍 第 71 / 300 课
课程进度
71 / 300

🎯本节学习目标

  • 掌握核心生命周期方法
  • 理解各方法的调用时机
  • 知道哪个方法放哪类代码

🚀课程导读

Unity 会在特定时机自动调用脚本里的一些“特殊方法”,这就是生命周期。搞懂它们,代码才会“在对的时候做对的事”。

核心生命周期方法

按时间顺序记忆。

  1. 【Awake()】:对象创建/脚本加载时最先调用,只调用一次。适合:获取组件引用、初始化变量(早于一切)。
  2. 【OnEnable()】:对象每次被启用时调用(包括 Awake 之后、首次显示时)。
  3. 【Start()】:在第一次 Update 之前调用一次,在 Awake 之后。适合:初始化依赖其他对象的数据、读取存档。
  4. 【Update()】:每帧调用一次。适合:需要每帧持续执行的逻辑(移动、检测)。
  5. 【LateUpdate()】:每帧在 Update 之后调用。适合:跟随相机的更新(在角色移动完成后)。
  6. 【FixedUpdate()】:固定时间间隔调用(默认 0.02 秒),物理计算用(第 72 课)。
  7. 【OnDisable()】:对象被禁用时调用。
  8. 【OnDestroy()】:对象被销毁时调用。适合:清理资源、保存数据。
  9. 【OnApplicationQuit()】:退出游戏时调用。
💡
顺序速记:Awake → OnEnable → Start → (FixedUpdate/Update/LateUpdate 循环) → OnDisable → OnDestroy。

生命周期实战

打印全部执行时机。

  1. 新建脚本 LifecycleDemo 挂到空对象上,在 Awake/Start/Update/LateUpdate/OnDisable/OnDestroy 里分别写 Debug.Log("方法名")。
  2. 播放运行,观察 Console 的顺序。
  3. 你会看到:Awake → OnEnable → Start → Update(每帧)→ LateUpdate(每帧)。
  4. 停止播放,观察 OnDisable → OnDestroy 输出。
  5. 尝试:在 Inspector 取消勾选脚本组件(禁用),观察 OnDisable 触发。
  6. 再勾选启用,观察 OnEnable 再次触发。
  7. 【实操要点】Awake 里 GetComponent 获取引用;Start 里使用引用;Update 里每帧逻辑。
  8. 多脚本时,Awake 先于所有 Start 执行(保证引用先就绪)。
铁律:获取引用放 Awake/Start,每帧逻辑放 Update,物理放 FixedUpdate。

常见错误与排查

错误:Update 里每帧 GetComponent 导致卡顿?
原因:每帧查找组件很耗
解决:在 Awake 里把组件存成字段,Update 直接用缓存。

动手练习

课后小任务(做出来才算真的学会)

  • 打印完整的生命周期顺序
  • 把 GetComponent 从 Update 移到 Awake 并对比性能
  • 体验禁用/启用脚本触发 OnEnable/OnDisable

本节小结

生命周期已掌握。下一课深挖 Update 与 FixedUpdate 的区别。

完成打卡后,主站会实时更新你的学习进度 🎯

← 上一课枚举 enum 与结构体 struct