Files
XCEngine/docs/api/XCEngine/Scripting/ScriptEngine/OnRuntimeStart.md

1.1 KiB
Raw Blame History

ScriptEngine::OnRuntimeStart

命名空间: XCEngine::Scripting

类型: method

头文件: XCEngine/Scripting/ScriptEngine.h

签名

void OnRuntimeStart(Components::Scene* scene);

当前实现流程

engine/src/Scripting/ScriptEngine.cpp

  1. 先调用 OnRuntimeStop() 清理旧运行时。
  2. 如果 scene == nullptr,直接返回。
  3. 记录 m_runtimeScene,置 m_runtimeRunning = true
  4. 调用当前运行时 m_runtime->OnRuntimeStart(scene)
  5. 订阅 scene->OnGameObjectCreated(),保证运行中创建的新对象也会被脚本系统追踪。
  6. 递归收集场景现有的所有 ScriptComponent
  7. 对满足 ShouldScriptRun() 的组件调用 EnsureScriptReady(..., true),从而创建实例并触发 Awake / OnEnable

设计重点

  • 这一步不会直接触发 StartStart 留到第一次 OnUpdate() 再补发。
  • 订阅场景创建事件,保证 runtime-spawn 出来的对象不会漏掉脚本初始化。

相关文档