41 lines
1.3 KiB
Markdown
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)
|