docs: add editor scripting workflow docs
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user