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

1.1 KiB

ScriptEngine::TrySetScriptFieldValue

命名空间: XCEngine::Scripting

类型: method

头文件: XCEngine/Scripting/ScriptEngine.h

签名

bool TrySetScriptFieldValue(
    ScriptComponent* component,
    const std::string& fieldName,
    ScriptFieldType type,
    const ScriptFieldValue& value);

当前实现流程

  1. 先拒绝空组件、空字段名或类型/值不兼容的请求。
  2. 如果组件已绑定脚本类,并且运行时能返回类字段元数据:
    • 字段必须存在。
    • 字段类型必须完全匹配。
  3. 如果当前运行时正在运行,且组件已有实例:
    • 先尝试写托管字段。
    • 托管写失败则整体失败。
  4. 托管写通过后,再写入 ScriptFieldStorage

设计意义

当前实现坚持“先过元数据校验,再写活实例,最后更新本地缓存”这条顺序。这样可以避免:

  • 向不存在的托管字段写脏数据。
  • 运行时值与本地缓存不一致。

相关文档