realvirtualBehavior 生命周期方法(Lifetime Methods)
当您在脚本中继承自 realvirtualBehavior 时,realvirtualController 会在关键时刻自动调用几个核心生命周期方法。此机制确保仿真逻辑的启动、停止和更新具有一致的流程。
方法概述
- AwakeAlsoDeactivated()
- 由 realvirtualController 在其自己的
Awake()方法中调用。 - 即使
realvirtualBehavior组件(或其 GameObject)未激活也会运行。 - 非常适合通常会在
Awake()中运行但需要在禁用时也会发生的任何早期设置逻辑。 - PreStartSim()
- 在 realvirtualController 准备好开始仿真时调用一次。
- 使用此方法完成任何仿真前配置,例如重置位置或清空缓存。
- StartSim()
- 紧接在 PreStartSim() 之后。
- 在此处开始您的运行时逻辑——启动动画、打开连接、生成对象等。
- StopSim()
- 当仿真被暂停或停止时调用(例如,通过暂停按钮)。
- 非常适合停止协程、停止运动和关闭任何活动连接。
- 由 realvirtualController 在其自己的
典型流程
- 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控制台中看到日志,精确显示每个方法何时被调用。这是确认以下内容的绝佳方式:
- 您的脚本是否按预期顺序接收这些调用。
- 某些脚本是否保持禁用状态,因此永远不会收到调用。
###