43 lines
1.0 KiB
Markdown
43 lines
1.0 KiB
Markdown
|
|
# SceneRuntime::Start
|
|||
|
|
|
|||
|
|
**命名空间**: `XCEngine::Components`
|
|||
|
|
|
|||
|
|
**类型**: `method`
|
|||
|
|
|
|||
|
|
**头文件**: `XCEngine/Scene/SceneRuntime.h`
|
|||
|
|
|
|||
|
|
## 签名
|
|||
|
|
|
|||
|
|
```cpp
|
|||
|
|
void Start(Scene* scene);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 作用
|
|||
|
|
|
|||
|
|
让一个场景进入运行状态,并启动其脚本运行时。
|
|||
|
|
|
|||
|
|
## 当前实现流程
|
|||
|
|
|
|||
|
|
按 `engine/src/Scene/SceneRuntime.cpp`:
|
|||
|
|
|
|||
|
|
1. 如果当前已经在运行同一个 `scene`,直接返回。
|
|||
|
|
2. 先调用 [Stop](Stop.md) 清掉旧运行时。
|
|||
|
|
3. 如果传入空场景,返回。
|
|||
|
|
4. 写入 `m_scene`,把 `m_running` 设为 `true`。
|
|||
|
|
5. 调用 `ScriptEngine::Get().OnRuntimeStart(scene)`。
|
|||
|
|
|
|||
|
|
## 参数
|
|||
|
|
|
|||
|
|
| 参数 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| `scene` | 要开始运行的场景;可为空,空时表示“停掉当前运行时但不启动新场景”。 |
|
|||
|
|
|
|||
|
|
## 设计含义
|
|||
|
|
|
|||
|
|
这种“先停再启”的切换方式很直接,也和很多商业引擎的 play mode 切场景行为一致。优点是生命周期边界清晰;代价是当前没有做平滑切换或状态迁移。
|
|||
|
|
|
|||
|
|
## 相关文档
|
|||
|
|
|
|||
|
|
- [SceneRuntime](SceneRuntime.md)
|
|||
|
|
- [SceneRuntime::Stop](Stop.md)
|