46 lines
1.1 KiB
Markdown
46 lines
1.1 KiB
Markdown
|
|
# Application::Shutdown
|
||
|
|
|
||
|
|
**命名空间**: `XCEngine::Editor`
|
||
|
|
|
||
|
|
**类型**: `method`
|
||
|
|
|
||
|
|
**源文件**: `editor/src/Application.h`
|
||
|
|
|
||
|
|
## 签名
|
||
|
|
|
||
|
|
```cpp
|
||
|
|
void Shutdown();
|
||
|
|
```
|
||
|
|
|
||
|
|
## 作用
|
||
|
|
|
||
|
|
按反向顺序释放当前 Editor 宿主壳持有的主要资源与子系统。
|
||
|
|
|
||
|
|
## 当前实现行为
|
||
|
|
|
||
|
|
- 会先把:
|
||
|
|
- `m_renderReady = false`
|
||
|
|
- `m_hasLastFrameTime = false`
|
||
|
|
- 然后依次执行:
|
||
|
|
- `DetachEditorLayer()`
|
||
|
|
- 若存在 `EditorContext`,先把其 `ViewportHostService` 指针清空
|
||
|
|
- `m_viewportHostService.Shutdown()`
|
||
|
|
- `UI::ShutdownBuiltInIcons()`
|
||
|
|
- `m_imguiBackend.Shutdown()`
|
||
|
|
- `m_imguiSession.Shutdown()`
|
||
|
|
- `ShutdownScriptingRuntime()`
|
||
|
|
- `ShutdownEditorContext()`
|
||
|
|
- 若资源系统曾初始化,则关闭 `ResourceManager`
|
||
|
|
- `m_windowRenderer.Shutdown()`
|
||
|
|
|
||
|
|
## 设计含义
|
||
|
|
|
||
|
|
- 当前 shutdown 顺序明显按依赖关系反向释放。
|
||
|
|
- 特别是先断开 `EditorContext -> ViewportHostService` 引用,再销毁视口宿主,避免悬空服务指针。
|
||
|
|
|
||
|
|
## 相关文档
|
||
|
|
|
||
|
|
- [Application](Application.md)
|
||
|
|
- [Initialize](Initialize.md)
|
||
|
|
- [Render](Render.md)
|