1.1 KiB
1.1 KiB
ScriptEngine::OnRuntimeStart
命名空间: XCEngine::Scripting
类型: method
头文件: XCEngine/Scripting/ScriptEngine.h
签名
void OnRuntimeStart(Components::Scene* scene);
当前实现流程
按 engine/src/Scripting/ScriptEngine.cpp:
- 先调用
OnRuntimeStop()清理旧运行时。 - 如果
scene == nullptr,直接返回。 - 记录
m_runtimeScene,置m_runtimeRunning = true。 - 调用当前运行时
m_runtime->OnRuntimeStart(scene)。 - 订阅
scene->OnGameObjectCreated(),保证运行中创建的新对象也会被脚本系统追踪。 - 递归收集场景现有的所有
ScriptComponent。 - 对满足
ShouldScriptRun()的组件调用EnsureScriptReady(..., true),从而创建实例并触发Awake / OnEnable。
设计重点
- 这一步不会直接触发
Start;Start留到第一次OnUpdate()再补发。 - 订阅场景创建事件,保证 runtime-spawn 出来的对象不会漏掉脚本初始化。