2.6 KiB
2.6 KiB
Unity式 Tick 系统与 Play Mode 运行时方案阶段进展
日期:2026-04-02
已完成
阶段 A
- 已接入
RuntimeLoop,统一承载FixedUpdate / Update / LateUpdate - 已接入
PlaySessionController - 已实现
Play / Stop - Play 时运行 runtime scene clone
- Stop 时恢复 editor scene snapshot
Run菜单与F5已可切换Play / Stop
阶段 B 当前收口
- 明确区分“文档级编辑”和“运行态场景对象编辑”
New/Open/Save Scene与New/Open/Save Project仍只允许在Edit下执行Play / Paused下允许对 runtime scene 进行对象级编辑与Undo / Redo- runtime scene 的对象改动默认不再污染场景文档 dirty 状态
阶段 C 当前收口
- 已补全
Pause / Resume / Step的完整请求与状态切换 Run菜单现在区分Play/Stop、Pause/Resume、StepError Pause已接入正式 Pause 请求通道Paused下维持 runtime world,不回退到 editor sceneStep现在只在Paused下有效,并保持Paused状态不变
阶段 D 当前收口
- 已在软件顶部增加独立运行栏
- 运行栏已接入
Play / Pause / Step三个图标按钮 - 顶部按钮直接复用现有 PlayMode 请求通道,不额外分叉状态机
Play按钮在运行中会保持高亮,再次点击即StopPause在Play / Paused下可用,并沿用现有F6Step仍只在Paused下可用- 顶部栏已改为参与 dockspace 布局,不再覆盖 Scene / Hierarchy / Inspector 面板标题区
本轮验证
- 已重新执行
cmake -S . -B build - 已通过
cmake --build build --config Debug --target scene_tests - 已通过
cmake --build build --config Debug --target editor_tests -- /m:1 /v:minimal - 已通过
cmake --build build --config Debug --target XCEditor -- /m:1 /v:minimal - 已通过聚焦测试:
ctest --test-dir build -C Debug --output-on-failure -j1 -R "RuntimeLoopTest|PlaySessionControllerTest|EditorActionRoutingTest.*PlayMode|EditorActionRoutingTest.*MainMenuRouterRequestsPlayPauseResumeAndStepEvents"
当前语义
editor tick负责托管运行时会话engine tick负责推进 runtime world- Play 时
Hierarchy / Inspector / SceneView / GameView面对的是同一份 runtime world - Play 中对对象的改动默认是临时运行态改动,Stop 后回滚
- Play 中禁止的是文档切换与文档保存,不是禁止观察或编辑 runtime clone
下一阶段建议
- 明确
Paused下的Undo / Redo / Gizmo / Inspector更细粒度交互边界 - 将 GameView 输入正式接入 runtime input 通道
- 继续补
Simulate与更完整的 Time 语义