docs: update scripting API docs
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
# MonoScriptRuntime::TryGetClassFieldDefaultValues
|
||||
|
||||
**命名空间**: `XCEngine::Scripting`
|
||||
|
||||
**类型**: `method`
|
||||
|
||||
**头文件**: `XCEngine/Scripting/Mono/MonoScriptRuntime.h`
|
||||
|
||||
## 签名
|
||||
|
||||
```cpp
|
||||
bool TryGetClassFieldDefaultValues(
|
||||
const std::string& assemblyName,
|
||||
const std::string& namespaceName,
|
||||
const std::string& className,
|
||||
std::vector<ScriptFieldDefaultValue>& outFields) const override;
|
||||
```
|
||||
|
||||
## 当前实现流程
|
||||
|
||||
1. 清空 `outFields`。
|
||||
2. 用 `(assemblyName, namespaceName, className)` 查找缓存的类元数据。
|
||||
3. 切换到当前 app domain。
|
||||
4. 创建一个临时托管对象并执行默认构造。
|
||||
5. 遍历缓存字段,逐个读取字段值并写入 `ScriptFieldDefaultValue`。
|
||||
6. 按 `fieldName` 排序后返回。
|
||||
|
||||
## 为什么它重要
|
||||
|
||||
这里返回的是托管类真实初始化后的字段值,所以它能反映:
|
||||
|
||||
- C# 字段初始化表达式
|
||||
- 默认构造后留下的初始状态
|
||||
|
||||
`ScriptEngine::TryGetScriptFieldModel()` 和 `ClearScriptFieldOverrides()` 都依赖这条数据。
|
||||
|
||||
## 失败路径
|
||||
|
||||
- 类找不到
|
||||
- Mono 无法创建临时对象
|
||||
- 任意字段读取失败
|
||||
|
||||
这些情况都会返回 `false`,并清空输出。
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [TryGetClassFieldMetadata](TryGetClassFieldMetadata.md)
|
||||
- [Project Script Assembly And Field Sync](../../../../_guides/Scripting/Project-Script-Assembly-And-Field-Sync.md)
|
||||
Reference in New Issue
Block a user