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

3.2 KiB

Scripting

命名空间: XCEngine::Scripting

类型: module

描述: 提供脚本组件数据模型、运行时调度器、字段序列化系统以及托管脚本后端抽象。

概览

XCEngine::Scripting 当前已经形成了一条比较清晰的运行链路:

  1. ScriptComponent 挂在 GameObject 上,保存脚本类绑定和序列化字段。
  2. ScriptEngine 在场景运行时追踪这些组件,管理实例创建、生命周期调用和字段同步。
  3. IScriptRuntime 定义脚本后端必须实现的统一桥接接口。
  4. NullScriptRuntime 提供无托管环境时的空实现兜底。
  5. Mono 子目录里的 MonoScriptRuntime 则是当前真正可运行的托管后端。

如果从 Unity 的经验去理解,这一层大致对应:

  • ScriptComponent 类似挂在对象上的脚本实例槽位。
  • ScriptEngine 类似引擎内部的脚本生命周期调度器。
  • MonoScriptRuntime 则像 C++ 引擎层和托管 MonoBehaviour 世界之间的桥梁。

但当前实现仍然比成熟商业引擎轻很多,文档必须明确区分“已经成立的真实行为”和“未来可能扩展的方向”。

设计要点

  • 把“脚本绑定数据”和“具体托管后端”拆开,可以让场景序列化不依赖 Mono。
  • ScriptFieldStorage 作为本地缓存,使脚本字段在无运行时、运行时和场景序列化三种状态间都能有统一落点。
  • IScriptRuntime 让引擎主流程只依赖抽象接口,方便以后接入别的脚本后端。
  • ScriptEngine 集中处理生命周期顺序,这比让各组件自己直接碰运行时更容易保证一致性。

当前实现边界

  • 当前公开支持的脚本字段类型是有限集合:标量、字符串、Vector2/3/4GameObject 引用。
  • 生命周期覆盖 Awake / OnEnable / Start / FixedUpdate / Update / LateUpdate / OnDisable / OnDestroy
  • NullScriptRuntime 只是桥接占位,不会真正执行脚本代码。
  • MonoScriptRuntime 当前围绕单个活动场景工作,还没有做域热重载、程序集增量刷新或完整编辑器脚本生态。

头文件

相关指南

相关文档