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

36 lines
1.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ScriptEngine::OnRuntimeStart
**命名空间**: `XCEngine::Scripting`
**类型**: `method`
**头文件**: `XCEngine/Scripting/ScriptEngine.h`
## 签名
```cpp
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`
## 设计重点
- 这一步不会直接触发 `Start``Start` 留到第一次 `OnUpdate()` 再补发。
- 订阅场景创建事件,保证 runtime-spawn 出来的对象不会漏掉脚本初始化。
## 相关文档
- [OnRuntimeStop](OnRuntimeStop.md)
- [OnUpdate](OnUpdate.md)