# IScriptRuntime **命名空间**: `XCEngine::Scripting` **类型**: `class (abstract)` **头文件**: `XCEngine/Scripting/IScriptRuntime.h` **描述**: 定义引擎脚本调度层与具体脚本后端之间的统一契约。 ## 概览 `IScriptRuntime` 是 `ScriptEngine` 唯一应该依赖的脚本后端接口。它把脚本后端抽象成三类能力: - 运行时启停。 - 托管类/字段元数据查询与字段读写。 - 脚本实例创建销毁与生命周期方法调用。 这种设计让 `ScriptEngine` 能专注于“调度”,而把 Mono、GCHandle、程序集加载这些实现细节留给具体后端。 ## 公开概念 ### ScriptLifecycleMethod 当前生命周期枚举值为: - `Awake` - `OnEnable` - `Start` - `FixedUpdate` - `Update` - `LateUpdate` - `OnDisable` - `OnDestroy` ### ScriptRuntimeContext `ScriptRuntimeContext` 是后端执行脚本实例时的最小上下文: | 字段 | 说明 | |------|------| | `scene` | 当前运行场景。 | | `gameObject` | 当前脚本所属对象。 | | `component` | 当前脚本组件。 | | `gameObjectUUID` | 原生对象 UUID。 | | `scriptComponentUUID` | 脚本组件 UUID。 | ## 线程语义 - 接口本身不承诺线程安全。 - 当前引擎默认由主线程按固定时序调用这些方法。 ## 公开方法 | 方法 | 说明 | |------|------| | [OnRuntimeStart](OnRuntimeStart.md) | 运行时开始时的后端入口。 | | [OnRuntimeStop](OnRuntimeStop.md) | 运行时停止时的后端入口。 | | [TryGetClassFieldMetadata](TryGetClassFieldMetadata.md) | 查询脚本类字段元数据。 | | [TrySetManagedFieldValue](TrySetManagedFieldValue.md) | 向托管实例写字段。 | | [TryGetManagedFieldValue](TryGetManagedFieldValue.md) | 从托管实例读字段。 | | [SyncManagedFieldsToStorage](SyncManagedFieldsToStorage.md) | 把托管字段同步回本地存储。 | | [CreateScriptInstance](CreateScriptInstance.md) | 创建脚本实例。 | | [DestroyScriptInstance](DestroyScriptInstance.md) | 销毁脚本实例。 | | [InvokeMethod](InvokeMethod.md) | 调用生命周期方法。 | ## 相关文档 - [ScriptEngine](../ScriptEngine/ScriptEngine.md) - [NullScriptRuntime](../NullScriptRuntime/NullScriptRuntime.md) - [MonoScriptRuntime](../Mono/MonoScriptRuntime/MonoScriptRuntime.md)