docs: update scripting API docs

This commit is contained in:
2026-04-02 22:23:29 +08:00
parent ec2891b16b
commit 3f9e286637
25 changed files with 776 additions and 76 deletions

View File

@@ -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)