切换深浅主题
关卡编辑器
负责已有关卡的体素、炮手队列、机关与属性编辑,以及隔离的游戏试跑和普通体素队列生成。入口为 Unity 菜单 Tools → 关卡编辑;规范关卡数据仍位于 Assets/SGame/CubeLand/Data/Levels,使用现有三份索引。
常用操作
- 修改体素:“体素编辑”提供选择、改色、添加、删除工具;
1–5切换工具,Shift点击增减多选。连续拖刷按一笔撤销;可在当前筛选集中全选、同色选择后批量改色、修改 depth 或删除。 - **观察内部:**逻辑 depth 支持剥层、仅当前值、范围与隐藏层线框参照;它不是 X/Y/Z 空间切片。颜色、depth 与机关外观筛选只影响编辑预览。
Alt左拖旋转、滚轮缩放、中/右拖平移;工具栏提供常用视角和选中聚焦。 - 编排炮手:“炮手队列”的插入线可新增、接收跨列拖放;右侧可指定目标列和最终位置。移动保留对象 ID;删除会提示并清理存活炮手的关联引用。引用池与可上阵队列需要区分。
- 检查弹量:“颜色与弹量”分别列出普通需求、队列弹量与引用池弹量,可定位体素或炮手。机关需求未完整计入,彩虹弹未分配到各色,工具计数不作为弹量;该统计不能证明可解。
- 保存与草稿:
Cmd/Ctrl+S保存,Cmd/Ctrl+Z撤销,Shift+Cmd/Ctrl+Z或Ctrl+Y重做。保存失败可检查定位;源文件外部变化会阻止覆盖,未知 JSON 字段会阻止进入编辑。另存为只新增关卡并更新index.all.json,不改默认/付费关序。
查找实现
| 任务 | 入口 |
|---|---|
| 窗口、关卡读取和筛选 | Editor/LevelPreview/LevelPreviewWindow.cs |
| 编辑、草稿、撤销与保存 | LevelEditorWindow.Editing.cs、LevelEditHistory.cs、LevelEditorFiles.cs |
| 多选与拖刷、批量编辑 | LevelEditorWindow.BulkEditing.cs、LevelVoxelStroke.cs、LevelVoxelEditing.cs |
| 队列与颜色统计 | LevelEditorWindow.Queues.cs、LevelQueueEditing.cs、LevelColorStatistics.cs |
| 游戏视图、参考帧叠图和导出 | LevelEditorWindow.Workflow.cs、LevelGamePreview.cs |
| 候选生成、验证与解法回放 | LevelEditorWindow.Generation.cs、LevelQueueGenerator.cs |
以上省略目录的编辑器文件均位于 Assets/SGame/CubeLand/Editor/LevelPreview/。关卡字段与读写结构从 Runtime/Levels/LevelData.cs、LevelJson.cs、LevelJsonWriter.cs 查起;不要假定存在 Excel 导表流程。
共享边界
- 编辑自由视角用于操作;游戏视图通过
LevelGamePreview创建关卡副本,并复用正式CubeLandGame、LevelSession与构图配置。试跑不回写编辑数据,草稿变化后需要重置试跑。 - 正式镜头、目标变换、槽位和队列布局由
Runtime/Presentation/CubeLandComposition.cs与Art/Gameplay/Composition.asset共用。规则和在途弹分别查Runtime/Gameplay/LevelSession.cs、BoardState.cs、ShotState.cs;相关模块:gameplay。 - 自动生成要求非空、无重复坐标的 1–21 色普通体素,至少一个槽位和一列队列;不支持机关、0 色墙、彩虹色、特殊炮、双色炮、Pilot、隐藏、冰冻或关联炮手。保留模型、配色、槽位和列数。候选须经正式游戏回放通关后才能作为已验证候选应用;预算耗尽或未找到候选只表示未验证,不能判定无解。验证记录位于
Library/CubeLand/Generation/,应用后仍需明确保存关卡。