docs(scripting): add baseline api reference and guide
This commit is contained in:
60
docs/api/XCEngine/Scripting/Scripting.md
Normal file
60
docs/api/XCEngine/Scripting/Scripting.md
Normal file
@@ -0,0 +1,60 @@
|
||||
# Scripting
|
||||
|
||||
**命名空间**: `XCEngine::Scripting`
|
||||
|
||||
**类型**: `module`
|
||||
|
||||
**描述**: 提供脚本组件数据模型、运行时调度器、字段序列化系统以及托管脚本后端抽象。
|
||||
|
||||
## 概览
|
||||
|
||||
`XCEngine::Scripting` 当前已经形成了一条比较清晰的运行链路:
|
||||
|
||||
1. [ScriptComponent](ScriptComponent/ScriptComponent.md) 挂在 `GameObject` 上,保存脚本类绑定和序列化字段。
|
||||
2. [ScriptEngine](ScriptEngine/ScriptEngine.md) 在场景运行时追踪这些组件,管理实例创建、生命周期调用和字段同步。
|
||||
3. [IScriptRuntime](IScriptRuntime/IScriptRuntime.md) 定义脚本后端必须实现的统一桥接接口。
|
||||
4. [NullScriptRuntime](NullScriptRuntime/NullScriptRuntime.md) 提供无托管环境时的空实现兜底。
|
||||
5. [Mono](Mono/Mono.md) 子目录里的 [MonoScriptRuntime](Mono/MonoScriptRuntime/MonoScriptRuntime.md) 则是当前真正可运行的托管后端。
|
||||
|
||||
如果从 Unity 的经验去理解,这一层大致对应:
|
||||
|
||||
- `ScriptComponent` 类似挂在对象上的脚本实例槽位。
|
||||
- `ScriptEngine` 类似引擎内部的脚本生命周期调度器。
|
||||
- `MonoScriptRuntime` 则像 C++ 引擎层和托管 `MonoBehaviour` 世界之间的桥梁。
|
||||
|
||||
但当前实现仍然比成熟商业引擎轻很多,文档必须明确区分“已经成立的真实行为”和“未来可能扩展的方向”。
|
||||
|
||||
## 设计要点
|
||||
|
||||
- 把“脚本绑定数据”和“具体托管后端”拆开,可以让场景序列化不依赖 Mono。
|
||||
- `ScriptFieldStorage` 作为本地缓存,使脚本字段在无运行时、运行时和场景序列化三种状态间都能有统一落点。
|
||||
- `IScriptRuntime` 让引擎主流程只依赖抽象接口,方便以后接入别的脚本后端。
|
||||
- `ScriptEngine` 集中处理生命周期顺序,这比让各组件自己直接碰运行时更容易保证一致性。
|
||||
|
||||
## 当前实现边界
|
||||
|
||||
- 当前公开支持的脚本字段类型是有限集合:标量、字符串、`Vector2/3/4` 和 `GameObject` 引用。
|
||||
- 生命周期覆盖 `Awake / OnEnable / Start / FixedUpdate / Update / LateUpdate / OnDisable / OnDestroy`。
|
||||
- `NullScriptRuntime` 只是桥接占位,不会真正执行脚本代码。
|
||||
- `MonoScriptRuntime` 当前围绕单个活动场景工作,还没有做域热重载、程序集增量刷新或完整编辑器脚本生态。
|
||||
|
||||
## 头文件
|
||||
|
||||
- [IScriptRuntime](IScriptRuntime/IScriptRuntime.md) - `IScriptRuntime.h`
|
||||
- [NullScriptRuntime](NullScriptRuntime/NullScriptRuntime.md) - `NullScriptRuntime.h`
|
||||
- [ScriptComponent](ScriptComponent/ScriptComponent.md) - `ScriptComponent.h`
|
||||
- [ScriptEngine](ScriptEngine/ScriptEngine.md) - `ScriptEngine.h`
|
||||
- [ScriptField](ScriptField/ScriptField.md) - `ScriptField.h`
|
||||
- [ScriptFieldStorage](ScriptFieldStorage/ScriptFieldStorage.md) - `ScriptFieldStorage.h`
|
||||
- [Mono](Mono/Mono.md) - `Mono/`
|
||||
|
||||
## 相关指南
|
||||
|
||||
- [Scripting Runtime And Field Model](../../_guides/Scripting/Scripting-Runtime-And-Field-Model.md) - 解释当前脚本系统如何把场景、脚本字段缓存和 Mono 运行时衔接起来,以及为什么这样设计。
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [SceneRuntime](../Scene/SceneRuntime/SceneRuntime.md)
|
||||
- [Scene](../Scene/Scene.md)
|
||||
- [上级目录](../XCEngine.md)
|
||||
- [API 总索引](../../main.md)
|
||||
Reference in New Issue
Block a user