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

46 lines
1.3 KiB
Markdown
Raw Normal View History

2026-04-02 22:23:29 +08:00
# ScriptEngine::ApplyScriptFieldWrites
**命名空间**: `XCEngine::Scripting`
**类型**: `method`
**头文件**: `XCEngine/Scripting/ScriptEngine.h`
## 签名
```cpp
bool ApplyScriptFieldWrites(
ScriptComponent* component,
const std::vector<ScriptFieldWriteRequest>& requests,
std::vector<ScriptFieldWriteResult>& outResults);
```
## 作用
批量写脚本字段,并为每个请求返回独立状态。
## 当前实现流程
1. 先调用 `TryGetScriptFieldModel()` 建立字段模型。
2. 针对每个请求逐项校验:
- 字段名不能为空
- 值必须和声明类型兼容
- 字段必须存在于当前模型
- 如果类元数据可用,不能给 `StoredOnly` 遗留字段写值
- 类型必须与模型字段类型一致
3. 对已声明字段走 `TrySetScriptFieldValue()`,保证活体实例和本地存储同步更新。
4. 对“类元数据缺失但本地仍有字段”的场景,允许直接写 `ScriptFieldStorage`
5. 把每条结果写入 `outResults`
## 返回值语义
- 只有所有请求状态都是 `Applied` 时,返回 `true`
- 只要出现一项失败或诊断状态,就返回 `false`
但无论整体布尔值如何,`outResults` 都是逐项结果的权威来源。
## 相关文档
- [ClearScriptFieldOverrides](ClearScriptFieldOverrides.md)
- [ScriptField](../ScriptField/ScriptField.md)