Files
XCEngine/docs/api/XCEngine/Editor/Application/GetScriptRuntimeStatus.md

69 lines
2.4 KiB
Markdown
Raw Normal View History

# Application::GetScriptRuntimeStatus
返回当前脚本运行时状态结构的只读引用。
```cpp
const EditorScriptRuntimeStatus& GetScriptRuntimeStatus() const;
```
## 返回内容
返回值指向 `Application` 内部持有的 `m_scriptRuntimeStatus`,不会复制状态结构。
当前结构体包括:
- `backendEnabled`
- `assembliesFound`
- `runtimeLoaded`
- `assemblyDirectory`
- `statusMessage`
字段的详细语义见 [EditorScriptRuntimeStatus](../Scripting/EditorScriptRuntimeStatus/EditorScriptRuntimeStatus.md)。
## 生命周期语义
因为返回的是引用而不是快照,所以调用方需要把它当成“当前帧状态视图”而不是稳定持久对象。
当前这些操作都会刷新或重置这份状态:
- `InitializeScriptingRuntime(...)`
- [ReloadScriptingRuntime](ReloadScriptingRuntime.md)
- [RebuildScriptingAssemblies](RebuildScriptingAssemblies.md)
- `SwitchProject(...)`
- `ShutdownScriptingRuntime()`
因此上层 UI 更适合“读取后立即渲染”,而不是长期缓存这份引用。
## 当前使用方式
这份状态当前最主要的用途不是给底层脚本系统消费,而是给编辑器 UI 做降级和提示判断,例如:
- 当前是否应显示 `Reload Scripts`
- 当前是否应显示 `Rebuild Scripts`
- 当前没有脚本类可选时应提示“后端禁用”“程序集缺失”还是“运行时初始化失败”
相关判断主要封装在 `ScriptComponentEditorUtils` 中。
## 设计含义
把脚本运行时状态作为一个轻量只读结构暴露出来,有两个直接好处:
1. `Application` 仍然掌握真正的生命周期控制权
2. Inspector / 菜单 / 按钮逻辑不需要了解 `MonoScriptRuntime` 的细节
这让上层 UI 可以基于状态做产品化反馈,而不是直接探查底层脚本后端对象。
## 当前限制
- 这不是线程安全快照,应按主线程 / UI 线程读。
- 状态里只保存“当前 editor 观察到的脚本可用性”,不是完整诊断报告。
- 构建失败文本和 runtime 初始化失败文本都会复用 `statusMessage` 这一条字符串通道。
## 相关文档
- [Application](Application.md)
- [ReloadScriptingRuntime](ReloadScriptingRuntime.md)
- [RebuildScriptingAssemblies](RebuildScriptingAssemblies.md)
- [EditorScriptRuntimeStatus](../Scripting/EditorScriptRuntimeStatus/EditorScriptRuntimeStatus.md)
- [ScriptComponentEditorUtils](../ComponentEditors/ScriptComponentEditorUtils/ScriptComponentEditorUtils.md)