realvirtualBehavior 生命周期方法(Lifetime Methods)

当您在脚本中继承自 realvirtualBehavior 时,realvirtualController 会在关键时刻自动调用几个核心生命周期方法。此机制确保仿真逻辑的启动、停止和更新具有一致的流程。


方法概述

  1. AwakeAlsoDeactivated()
    • realvirtualController 在其自己的 Awake() 方法中调用。
    • 即使 realvirtualBehavior 组件(或其 GameObject)未激活也会运行。
    • 非常适合通常会在 Awake() 中运行但需要在禁用时也会发生的任何早期设置逻辑。
    • PreStartSim()
    • realvirtualController 准备好开始仿真时调用一次。
    • 使用此方法完成任何仿真前配置,例如重置位置或清空缓存。
    • StartSim()
    • 紧接在 PreStartSim() 之后。
    • 在此处开始您的运行时逻辑——启动动画、打开连接、生成对象等。
    • StopSim()
    • 当仿真被暂停或停止时调用(例如,通过暂停按钮)。
    • 非常适合停止协程、停止运动和关闭任何活动连接。

典型流程

  1. realvirtualController.Awake()
    • 在每个 realvirtualBehavior 上调用 AwakeAlsoDeactivated()
    • realvirtualController.Start()
    • 最终调用 StartSim()(在运行 PreStartSim() 之后)。
    • realvirtualController.Pause() / StopSim()
    • 在每个 realvirtualBehavior 上调用 StopSim()

以下是简化的时间线:


Unity 加载场景
└──> realvirtualController: Awake()
     ├──> 在所有 realvirtualBehavior 脚本上调用 AwakeAlsoDeactivated()
     └──> 额外的初始化步骤

稍后,realvirtualController: Start()
├──> 在所有 realvirtualBehavior 上调用 PreStartSim()
└──> 在所有 realvirtualBehavior 上调用 StartSim()

暂停或停止时:
└──> 在所有 realvirtualBehavior 上调用 StopSim()

示例脚本

以下是如何扩展 realvirtualBehavior 来响应这些调用的示例:


using UnityEngine;

namespace realvirtual
{
    // 继承自 realvirtualBehavior
    public class MyMachine : realvirtualBehavior
    {
        // 由控制器在 Awake() 中调用,即使 'MyMachine' 未激活
        public override void AwakeAlsoDeactivated()
        {
            base.AwakeAlsoDeactivated();
            Debug.Log("MyMachine: AwakeAlsoDeactivated - Basic setup done.");
        }

        // 在仿真实际开始前调用
        public override void PreStartSim()
        {
            Debug.Log("MyMachine: PreStartSim - Final checks before sim begins.");
        }

        // 紧接在 PreStartSim 之后调用
        public override void StartSim()
        {
            Debug.Log("MyMachine: StartSim - Simulation logic begins.");
        }

        // 当仿真被暂停或停止时调用
        public override void StopSim()
        {
            Debug.Log("MyMachine: StopSim - Cleaning up and halting movements.");
        }
    }
}

何时使用这些方法

  • AwakeAlsoDeactivated()
  • 用于设置必须无论 GameObject 的活动状态如何都存在的引用或配置。
  • 对于桥接依赖项或准备其他脚本所需的数据很有用。
  • PreStartSim()
  • 用于仿真即将变为"活跃"之前的最后一分钟准备。
  • 例如,确保内部缓存或对象池就绪、重置环境等。
  • StartSim()
  • 您的主逻辑的"启动"信号——启动动画、启用基于物理的行为或开始计时器。
  • StopSim()
  • 优雅关闭:停止动画、保存状态、清理。
  • 当用户暂停或仿真被 realvirtualController 以其他方式停止时调用。

使用 DebugMode 调试

通过在 realvirtualController 上启用 DebugMode,您将在 Unity控制台中看到日志,精确显示每个方法何时被调用。这是确认以下内容的绝佳方式:

  • 您的脚本是否按预期顺序接收这些调用。
  • 某些脚本是否保持禁用状态,因此永远不会收到调用。

###