Skip to content

生命周期

在组件化编程中,生命周期方法指的是组件在其存在期间经历的一系列状态变化。这些状态变化为创作者提供了在组件的不同阶段执行特定逻辑的机会。以下是几个常见的组件生命周期方法的介绍:

Start

  • 描述Start 方法在组件首次激活时调用,仅调用一次。它发生在组件实例化并初始化完成后,但在第一帧更新之前。
  • 用途:常用于初始化组件所需的资源或设置初始状态。
  • 触发方法:AddComponent(),实例化游戏对象时
  • 拥有者:GameObject,Component
typescript
class BaseComponent extends Component<GameEntity> {
  protected Start(): void {}
}

Update

  • 描述Update 方法在每一帧(30 FPS)中被调用,用于处理组件的持续逻辑更新。但组件为启用状态时才被调用。
  • 注意:当游戏对象(GameObject)处于启用状态时,Update 方法才会被调用。
  • 用途:适合放置需要每帧执行的逻辑,如动画更新、物理模拟等。
  • 拥有者:Component
typescript
class BaseComponent extends Component<GameEntity> {
  protected Update(deltaTime: number): void {}
}

onEnable

  • 描述onEnable 方法在组件被启用时调用。当组件被禁用后再次启用时,也会触发此方法。
  • 用途:用于在组件重新启用时恢复某些功能或状态,比如重新订阅事件或恢复资源加载。
  • 触发方法:enable
  • 拥有者:GameObject,Component
typescript
class BaseComponent extends Component<GameEntity> {
  protected onEnable(): void {}
}

onDisable

  • 描述onDisable 方法在组件被禁用时调用。当组件被启用后再次禁用时,也会触发此方法。
  • 用途:用于清理资源、停止正在进行的操作或取消事件订阅,以避免内存泄漏或不必要的资源消耗。
  • 触发方法:enable
  • 拥有者:GameObject,Component
typescript
class BaseComponent extends Component<GameEntity> {
  protected onDisable(): void {}
}

onDestroy

  • 描述onDestroy 方法在组件被销毁时调用,是组件生命周期中的最后一个方法。当组件被永久移除或销毁时,此方法会被触发。
  • 用途:用于执行最终的清理工作,如释放非托管资源、保存持久化数据等。
  • 触发方法:RemoveComponent(),RemoveComponentAll(),RemoveGameObject()
  • 拥有者:GameObject,Component
typescript
class BaseComponent extends Component<GameEntity> {
  protected onDestroy(): void {}
}

理解并利用这些生命周期方法,可以帮助创作者更好地管理组件的行为和资源,提高应用程序的性能和稳定性。