docs: update scripting API docs

This commit is contained in:
2026-04-02 22:23:29 +08:00
parent ec2891b16b
commit 3f9e286637
25 changed files with 776 additions and 76 deletions

View File

@@ -8,15 +8,15 @@
## 概览
`docs/api/XCEngine/Scripting/Mono` 对应的是 `engine/include/XCEngine/Scripting/Mono` 子目录。它不是独立命名空间,而是脚本模块下按实现后端划分出的子目录。
`docs/api/XCEngine/Scripting/Mono` 对应 `engine/include/XCEngine/Scripting/Mono` 子目录。它不是独立命名空间,而是脚本模块按后端实现拆出来的子目录。
当前这里的核心类型只有 [MonoScriptRuntime](MonoScriptRuntime/MonoScriptRuntime.md)。它负责:
当前这里唯一的公开类型是 [MonoScriptRuntime](MonoScriptRuntime/MonoScriptRuntime.md)。它负责:
- 初始化 Mono root domain 和 app domain。
- 加载脚本核心程序集游戏程序集。
- 发现可用脚本类和公共实例字段
- `ScriptComponent``GameObject` 与托管对象实例绑定起来
- 在生命周期调用后把托管字段同步回本地存储
- 解析 `MonoScriptRuntime::Settings`,推导程序集目录、脚本核心程序集游戏程序集路径
- 加载 `XCEngine.ScriptCore.dll``GameScripts.dll`
- 发现应用程序集中的非抽象 `MonoBehaviour` 子类,并缓存支持的公共实例字段与生命周期方法
- `ScriptComponent` 创建托管实例,注入 `GameObject`/`ScriptComponent` 上下文,并在生命周期后同步字段
## 为什么单独分目录
@@ -25,11 +25,21 @@
- 可以清楚区分“脚本系统公共契约”和“具体后端实现”。
- 以后如果接入别的脚本后端,这里天然就是平行扩展点。
## 程序集来源
当前 Mono 后端既支持测试程序集目录,也支持项目资产脚本程序集目录:
- `managed/CMakeLists.txt` 会构建基础 `XCEngine.ScriptCore.dll``GameScripts.dll`
- 同一份 CMake 还会把 `project/Assets/**/*.cs` 编译到 `project/Library/ScriptAssemblies/GameScripts.dll`
- `tests/scripting/test_project_script_assembly.cpp` 已验证运行时能从项目程序集目录发现 `ProjectScripts.ProjectScriptProbe` 及其默认字段值。
## 当前实现边界
- 当前只实现了 Mono 后端,没有并列的 IL2CPP、Lua 或自研 VM 后端。
- 目录里只有一个 public header说明当前重点仍然是把单条托管脚本链路先跑顺
- 内部调用注册已覆盖 `GameObject``Transform``Camera``Light``MeshFilter``MeshRenderer` 和基础日志/时间桥接,但远不是完整编辑器级 API 面
- 目录里只有一个 public header说明当前重点仍然是把一条 Mono 托管链路跑通
- 类发现只扫描当前应用程序集里的非抽象 `MonoBehaviour` 子类,不会把工具类或抽象基类暴露给脚本绑定 UI
- 字段发现只接受受支持类型的 `public``static` 实例字段。
- internal call 目前已覆盖 `GameObject``Transform``Camera``Light``MeshFilter``MeshRenderer`、日志和时间桥接,但远不是完整编辑器级脚本 API 面。
## 头文件
@@ -38,6 +48,7 @@
## 相关指南
- [Scripting Runtime And Field Model](../../../_guides/Scripting/Scripting-Runtime-And-Field-Model.md)
- [Project Script Assembly And Field Sync](../../../_guides/Scripting/Project-Script-Assembly-And-Field-Sync.md)
## 相关文档