Files
XCEngine/docs/issues/C#脚本系统_Editor前置缺口.md

7.2 KiB
Raw Blame History

C#脚本系统 Editor 前置缺口

1. 目的

本文档只记录 C# 脚本系统接入 editor 时需要补齐的 editor 侧缺口

这些内容 不是脚本模块第一阶段的实现范围。 第一阶段仍以:

  • 运行时闭环
  • 单元测试闭环
  • 最小场景级验证

为主。

本文档的作用是防止后续把 editor 集成需求误混到第一阶段里。


2. 当前策略

当前策略明确如下:

  • 脚本系统第一阶段先不依赖 editor
  • editor 只作为后续集成目标
  • editor 相关工作拆分为独立 issue

因此,下面所有条目均属于:

  • 后续阶段工作
  • 或 editor / runtime 边界层工作

3. Issue 列表

E-001 Play / Simulate 工作流尚未落地

现状

editor 当前已经定义了相关事件,但完整的 Play / Simulate 切换链路仍未形成统一工作流。

影响

没有这条链路,脚本系统无法在 editor 中以接近 Unity 的方式运行:

  • 无法从编辑态切换到运行态
  • 无法创建运行时场景副本
  • 无法触发脚本运行时启动与停止

需要补齐

  • EditorMode 状态机
  • Edit / Play / Simulate 三态切换
  • 菜单栏或工具栏中的 Play / Stop / Pause 控件
  • 对应的事件派发和恢复流程

优先级

高,但属于 editor 集成阶段,不属于脚本第一阶段


E-002 editor 场景与 runtime 场景切换控制未封装

现状

当前 scene 管理具备快照能力,但 editor 还没有一套完整的“运行时场景副本控制器”。

影响

没有这一层,脚本一旦接入 editor会直接面临以下风险

  • Play 过程污染编辑场景
  • Stop 后无法恢复编辑态
  • 运行时对象状态和 editor 面板状态错乱

需要补齐

  • editor 场景与 runtime 场景的明确所有权
  • Play 前复制
  • Stop 后恢复
  • 运行时期间禁用部分编辑操作
  • 选中对象和层级面板的状态同步策略

优先级


E-003 Inspector 缺少 ScriptComponent 作者化 UI

现状

当前 editor Inspector 还没有脚本组件专用 UI。

影响

即使底层脚本系统完成,用户也无法在 editor 中完成以下基础操作:

  • 添加脚本组件
  • 删除脚本组件
  • 选择脚本类
  • 查看脚本类名
  • 调整脚本组件顺序

需要补齐

  • Add Component 菜单中的 ScriptComponent
  • 已挂载脚本组件列表
  • 脚本类选择器
  • 脚本丢失 / 类不存在 / 程序集未加载的错误态显示

优先级


E-004 Inspector 缺少脚本字段编辑能力

现状

当前 editor 没有基于脚本字段元数据的动态 Inspector。

影响

无法实现 Unity 风格脚本工作流中最关键的一环:

  • 在 Inspector 中编辑脚本字段

需要补齐

  • 字段元数据缓存到 editor 层
  • 基础类型字段绘制
  • Vector2/3/4 字段绘制
  • bool / string / 数值类型编辑
  • 字段值回写 ScriptComponent 的字段缓存

优先级


E-005 C# 项目与程序集管理缺失

现状

Project 面板目前已经有 Assets/Scripts 目录概念,但没有正式的 C# 项目管理机制。

影响

用户无法在 editor 中稳定地管理脚本编译输入和输出:

  • 没有 GameScripts.csproj
  • 没有 ScriptCore 引用管理
  • 没有程序集输出路径约定

需要补齐

  • 项目初始化时创建脚本工程模板
  • 脚本程序集输出目录规范
  • ScriptCore 引用自动配置
  • 脚本工程文件缺失时的恢复策略

优先级

中到高


E-006 editor 内缺少脚本编译触发入口

现状

当前 editor 没有“编译脚本”入口,也没有编译状态反馈。

影响

后续即使 Inspector 可选择脚本,用户也无法在 editor 中完成闭环:

  • 修改脚本
  • 编译程序集
  • 重新加载类列表

需要补齐

  • 手动编译按钮
  • 后续可扩展到自动编译或文件监听
  • 编译状态显示
  • 成功/失败结果通知

优先级

中到高


E-007 Console 面板缺少脚本编译错误与运行时异常接入

现状

当前 Console 还没有专门的脚本编译/加载/执行错误通路。

影响

脚本系统接入 editor 后,最基本的错误反馈都会缺失:

  • 编译错误
  • 程序集加载失败
  • 类发现失败
  • 运行时异常
  • 栈信息显示

需要补齐

  • 编译器 stdout/stderr 采集
  • 程序集加载错误显示
  • 托管异常栈转发到 Console
  • 错误级别区分
  • 后续可扩展到点击跳转文件/行号

优先级


E-008 脚本类数据库与类缓存刷新机制缺失

现状

editor 还没有“当前项目有哪些可挂载脚本类”的缓存层。

影响

没有这一层Inspector 无法稳定实现:

  • 类下拉列表
  • 类是否可挂载的判断
  • 类丢失提示
  • 程序集重载后的刷新

需要补齐

  • 脚本程序集扫描结果缓存
  • 全限定类名列表
  • 类状态标记
  • reload 后缓存刷新

优先级


E-009 对象引用字段的 editor 交互控件缺失

现状

后续脚本字段一旦支持 GameObject / 组件引用editor 目前没有相应控件。

影响

对象引用字段虽然不属于脚本第一阶段必需项,但属于后续可用性的关键能力。

需要补齐

  • 场景对象选择器
  • 层级面板拖拽赋值
  • 失效引用显示
  • 类型校验

优先级


E-010 脚本程序集重载的 editor UX 缺失

现状

editor 当前没有定义“脚本重载时如何影响当前状态”的用户体验规则。

影响

后续一旦接入脚本编译与重载,会出现一系列状态问题:

  • 当前选中对象是否刷新
  • Inspector 是否保留编辑状态
  • Play 中是否允许重载
  • 重载失败如何回退

需要补齐

  • Edit 模式重载策略
  • Play 模式重载策略
  • 失败回退策略
  • 用户提示文案与状态反馈

优先级


4. 与 editor 集成直接相关的推荐顺序

建议的 editor 集成顺序如下:

  1. E-001 Play / Simulate 工作流
  2. E-002 runtime scene 切换控制
  3. E-003 ScriptComponent 作者化 UI
  4. E-004 脚本字段 Inspector
  5. E-007 Console 错误接入
  6. E-005 C# 项目与程序集管理
  7. E-006 脚本编译入口
  8. E-008 类数据库刷新
  9. E-009 对象引用字段控件
  10. E-010 程序集重载 UX

这个顺序的核心原则是:

  • 先让脚本能在 editor 中“跑起来”
  • 再让脚本能在 editor 中“被作者化”
  • 最后再补自动化体验与重载体验

5. 关联但不归 editor 的前置项

以下事项不是 editor issue但会直接影响后续 editor 集成质量:

  • GameObject UUID 持久化
  • 运行时生命周期规范化
  • Start 一次性语义
  • SetActive 驱动 OnEnable/OnDisable
  • 场景递归更新
  • ScriptComponent 字段缓存与序列化

这些工作应当在脚本第一阶段或 editor 集成前置阶段优先完成。


6. 结论

脚本系统第一阶段不应被 editor 当前进度绑定。

正确的推进方式是:

  • 先做运行时与单测闭环
  • 再按本文档逐项补 editor 集成能力

这样可以避免脚本模块在早期同时背负:

  • 运行时实现风险
  • editor 工作流风险
  • UI 设计风险
  • 重载体验风险

从而把复杂度拆开,逐步落地。