Files
XCEngine/docs/api/XCEngine/Scripting/ScriptEngine/ClearScriptFieldOverrides.md

41 lines
1.3 KiB
Markdown

# ScriptEngine::ClearScriptFieldOverrides
**命名空间**: `XCEngine::Scripting`
**类型**: `method`
**头文件**: `XCEngine/Scripting/ScriptEngine.h`
## 签名
```cpp
bool ClearScriptFieldOverrides(
ScriptComponent* component,
const std::vector<ScriptFieldClearRequest>& requests,
std::vector<ScriptFieldClearResult>& outResults);
```
## 作用
批量清理字段覆盖,并在可能时把活体托管字段恢复到类默认值。
## 当前实现流程
1. 先构建 `ScriptFieldModel`,再收集类默认值表。
2. 对每个请求校验字段名是否为空、字段是否存在于模型。
3. 如果字段属于当前脚本类且活体实例存在:
- 调用运行时 `TrySetManagedFieldValue()`
- 把托管值重置为该字段的类默认值
4. 如果本地存储中有同名覆盖项,则移除该存储项。
5. 如果既没有活体值可重置,也没有存储覆盖可删除,结果为 `NoValueToClear`
## 返回值语义
- 只有所有请求都成功清理时,返回 `true`
- 任一请求出现 `UnknownField``EmptyFieldName``NoValueToClear``ApplyFailed`,整体返回 `false`
## 相关文档
- [ApplyScriptFieldWrites](ApplyScriptFieldWrites.md)
- [ScriptEngine::TryGetScriptFieldModel](TryGetScriptFieldModel.md)