Files
XCEngine/docs/api/XCEngine/Scripting/NullScriptRuntime/NullScriptRuntime.md

2.2 KiB

NullScriptRuntime

命名空间: XCEngine::Scripting

类型: class

头文件: XCEngine/Scripting/NullScriptRuntime.h

描述: IScriptRuntime 的空实现,用作无托管环境时的默认兜底后端。

概览

NullScriptRuntime 的作用不是执行脚本,而是让整个脚本系统在“没有真实脚本后端”的情况下仍然保持接口闭合:

  • ScriptEngine 仍然可以安全持有一个运行时对象。
  • 场景和脚本组件的原生数据层仍然可以工作。
  • 测试或工具链不需要为“没有运行时时指针为空”额外兜底。

这是一种很典型的 Null Object 模式,在商业引擎底层模块中很常见。

当前实现行为

  • 运行时启停是 no-op。
  • 元数据查询总是失败,并清空输出数组。
  • 托管写字段总是返回 true,相当于“我接受这个请求,但没有实际后端可写”。
  • 托管读字段总是返回 false
  • 同步字段是 no-op。
  • 创建实例时,只要 context.component 非空就返回 true
  • 销毁实例和生命周期调用都是 no-op。

设计代价

这种兜底方案能让主流程更简单,但也意味着:

  • “返回成功”不一定真的代表有托管实例存在。
  • 如果用户误以为自己接了真实脚本后端,问题会更偏逻辑层而不是崩溃层暴露出来。

因此文档必须清楚说明它是占位运行时,而不是简化版脚本解释器。

公开方法

方法 说明
OnRuntimeStart 空实现。
OnRuntimeStop 空实现。
TryGetClassFieldMetadata 始终失败并清空输出。
TrySetManagedFieldValue 始终返回 true
TryGetManagedFieldValue 始终返回 false
SyncManagedFieldsToStorage 空实现。
CreateScriptInstance 仅检查组件指针是否存在。
DestroyScriptInstance 空实现。
InvokeMethod 空实现。

相关文档