docs: update scripting API docs
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
|
||||
**头文件**: `XCEngine/Scripting/ScriptField.h`
|
||||
|
||||
**描述**: 定义脚本字段类型系统、字段快照模型以及序列化/反序列化辅助函数。
|
||||
**描述**: 定义脚本字段类型系统、字段快照模型、批量写入状态以及序列化/反序列化辅助函数。
|
||||
|
||||
## 概览
|
||||
|
||||
@@ -46,15 +46,58 @@
|
||||
- `Math::Vector4`
|
||||
- `GameObjectReference`
|
||||
|
||||
### ScriptFieldMetadata / ScriptFieldDefaultValue
|
||||
|
||||
- `ScriptFieldMetadata` 表示类里声明了一个什么字段。
|
||||
- `ScriptFieldDefaultValue` 表示该字段在托管类初始状态下的默认值。
|
||||
|
||||
`MonoScriptRuntime::TryGetClassFieldDefaultValues()` 会直接构造托管对象并读取这一层数据,因此它可以反映 C# 字段初始化表达式。
|
||||
|
||||
### ScriptFieldSnapshot / ScriptFieldModel
|
||||
|
||||
它们用于字段面板、字段模型比对和“已声明字段 vs 已存储字段”诊断。`ScriptEngine::TryGetScriptFieldModel()` 会用到这组结构。
|
||||
它们用于字段面板、字段模型比对和“已声明字段 vs 已存储字段”诊断。`ScriptEngine::TryGetScriptFieldModel()` 会把默认值、存储值和活体托管值融合到这组结构里。
|
||||
|
||||
相关状态枚举:
|
||||
|
||||
- `ScriptFieldClassStatus`
|
||||
`Unassigned / Available / Missing`
|
||||
- `ScriptFieldValueSource`
|
||||
`None / DefaultValue / StoredValue / ManagedValue`
|
||||
- `ScriptFieldIssue`
|
||||
`None / StoredOnly / TypeMismatch`
|
||||
|
||||
### ScriptFieldWriteRequest / ScriptFieldWriteResult
|
||||
|
||||
这组结构用于 `ScriptEngine::ApplyScriptFieldWrites()` 的批量写接口。
|
||||
|
||||
`ScriptFieldWriteStatus` 当前包括:
|
||||
|
||||
- `Applied`
|
||||
- `EmptyFieldName`
|
||||
- `UnknownField`
|
||||
- `InvalidValue`
|
||||
- `TypeMismatch`
|
||||
- `StoredOnlyField`
|
||||
- `ApplyFailed`
|
||||
|
||||
### ScriptFieldClearRequest / ScriptFieldClearResult
|
||||
|
||||
这组结构用于 `ScriptEngine::ClearScriptFieldOverrides()` 的批量清理接口。
|
||||
|
||||
`ScriptFieldClearStatus` 当前包括:
|
||||
|
||||
- `Applied`
|
||||
- `EmptyFieldName`
|
||||
- `UnknownField`
|
||||
- `NoValueToClear`
|
||||
- `ApplyFailed`
|
||||
|
||||
## 设计要点
|
||||
|
||||
- 字段类型集合是显式白名单,而不是任意模板反射。
|
||||
- 文本序列化逻辑集中在这个头对应的实现里,保证 `ScriptFieldStorage` 和脚本组件共用同一套规则。
|
||||
- `StoredOnly`、`TypeMismatch` 这类问题状态被直接编码进快照模型,便于编辑器或调试工具解释当前字段状态。
|
||||
- `StoredOnly`、`TypeMismatch`、`DefaultValue / StoredValue / ManagedValue` 这些状态被直接编码进快照模型,便于编辑器或调试工具解释当前字段状态。
|
||||
- 批量写入/清理结果也被做成显式状态枚举,避免 UI 只能拿到一个粗糙的布尔值。
|
||||
|
||||
## 公开函数
|
||||
|
||||
|
||||
Reference in New Issue
Block a user