docs(spell-editor): 手册改为字段化表单 + game_designer 入口

This commit is contained in:
2026-07-21 16:09:33 +08:00
parent 29efa986c5
commit ed89387f2e
+21 -19
View File
@@ -4,24 +4,22 @@
--- ---
## 1. 启用插件 ## 1. 打开编辑器
插件位于 `res://addons/spell_editor/`,默认已在 `project.godot` 启用。若未显示: 法术编辑现已并入 **游戏设计器**`res://addons/game_designer/`,默认已在 `project.godot` 启用
``` ```
项目 → 项目设置 → 插件 → 勾选 "Spell Editor (法术编辑器)" Godot 编辑器 → 底部面板 → 🎮 游戏设计器 → ✨ 法术 标签页
``` ```
启用后,编辑器**左下停靠区**会出现「法术编辑器」标签页 > 独立的「法术编辑器左下停靠面板已移除,法术统一在游戏设计器内维护。修改插件后可能需**重启 Godot 编辑器**让面板刷新
> 首次启用或修改插件后,可能需要**重启 Godot 编辑器**让停靠面板出现。
--- ---
## 2. 界面说明 ## 2. 界面说明
``` ```
✨ 法术编辑器 ✨ 法术编辑器 — 字段化表单
┌────────────────────────┐ ┌────────────────────────┐
│ 法术列表(ItemList │ ← 所有 data/spells.json 中的法术 │ 法术列表(ItemList │ ← 所有 data/spells.json 中的法术
│ [ACTION] action_frost… │ │ [ACTION] action_frost… │
@@ -29,19 +27,21 @@
└────────────────────────┘ └────────────────────────┘
[➕新增] [⧉复制] [🗑删除] [➕新增] [⧉复制] [🗑删除]
──────────────────────── ────────────────────────
ID(唯一) : [______] ID(唯一)/ 类型[ACTION ▾]/ 显示名 / 描述 / 元素标签(逗号)
类型 : [ACTION ▾] ── 通用 meta ──
显示名(tr 键) : [______] 蓝耗 mana_cost / 商店价 shop_cost / 解锁价 unlock_cost
描述(tr 键) : [______] ── 动态字段(随类型/子类型自动切换)──
元素标签(逗号) : [tag:ice] ACTION:动作种类[弹道 / zone 毒池 / summon 召唤] + 对应字段
metaJSON : [______] (伤害 / 速度 / 存活 / 半径 / 伤害类型▾ / 施加状态▾ / …)
[______] MODIFIER / TRIGGER / LOGIClogic_op▾ 子选择)各自字段
[插入该类型 meta 模板] ── 其它(JSON) ── ← schema 之外的键,保留不丢
──────────────────────── ────────────────────────
[✓应用到列表] [💾保存文件] [↻重载] [✓应用到列表] [💾保存文件] [↻重载]
状态:…… 状态:……
``` ```
> **不再手写 meta JSON**:字段随「类型」及 ACTION 的「动作种类」/ LOGIC 的「logic_op」自动切换;只有 schema 未覆盖的非常规键才会出现在「其它(JSON)」框里(保留不丢)。
--- ---
## 3. 新增一个法术(操作流程) ## 3. 新增一个法术(操作流程)
@@ -51,7 +51,7 @@ metaJSON : [______]
3.**类型**ACTION / MODIFIER / TRIGGER / LOGIC 3.**类型**ACTION / MODIFIER / TRIGGER / LOGIC
4.**显示名 / 描述**(建议填 `tr()` 键,如 `SPELL_LIGHTNING_NAME`,见 [04 本地化](04_localization.md) 4.**显示名 / 描述**(建议填 `tr()` 键,如 `SPELL_LIGHTNING_NAME`,见 [04 本地化](04_localization.md)
5.**元素标签**(共鸣用,如 `tag:lightning`;多个用逗号) 5.**元素标签**(共鸣用,如 `tag:lightning`;多个用逗号)
6. 编辑 **meta**(JSON)——点「插入该类型 meta 模板」获取起始模板,改数值 6. **meta 字段**——通用区(蓝耗/商店价/解锁价)常驻;下方动态区随类型(及 ACTION 动作种类 / LOGIC logic_op)自动列出对应字段,直接填数值即可
7.**✓应用到列表** → 校验并写入内存 7.**✓应用到列表** → 校验并写入内存
8.**💾保存文件** → 写入 `res://data/spells.json` 8.**💾保存文件** → 写入 `res://data/spells.json`
9. 运行游戏(F5)→ 新法术自动出现在商店池,可购买施放 9. 运行游戏(F5)→ 新法术自动出现在商店池,可购买施放
@@ -62,6 +62,8 @@ metaJSON : [______]
## 4. meta 字段速查(按类型) ## 4. meta 字段速查(按类型)
> 下列字段现由表单**按类型自动呈现**,无需手写 JSON;本速查作为字段语义参考。`damage_type`0物理/1火/2冰/3雷/4毒/5奥术)与 `apply_status_id`/`status_id`0无/1燃烧/2冻结/3中毒/4潮湿/5沾油/6眩晕/7连击/8易伤)为整数枚举,表单以下拉呈现。
### ACTION(弹道) ### ACTION(弹道)
```json ```json
{ "base_damage": 5.0, "speed": 350.0, "lifetime": 4.0, "radius": 6.0, { "base_damage": 5.0, "speed": 350.0, "lifetime": 4.0, "radius": 6.0,
@@ -105,7 +107,7 @@ metaJSON : [______]
## 5. 数据流(原理) ## 5. 数据流(原理)
``` ```
法术编辑器 dock ──保存──▶ res://data/spells.json ──游戏启动加载──▶ SpellRegistry 法术编辑器 tab ──保存──▶ res://data/spells.json ──游戏启动加载──▶ SpellRegistry
(编辑器内) (纯数据,可 git 版本管理) (注册到法术 VM) (编辑器内) (纯数据,可 git 版本管理) (注册到法术 VM)
商店抽取 / 背包装备 / 法术 VM 编译施放 商店抽取 / 背包装备 / 法术 VM 编译施放
@@ -123,12 +125,12 @@ metaJSON : [______]
| 工具 | 数据文件 | 对应硬编码 | | 工具 | 数据文件 | 对应硬编码 |
|:---|:---|:---| |:---|:---|:---|
| **法术编辑器**(已实现) | `data/spells.json` | `wand_preset.gd` | | **法术编辑器**(已实现game_designer tab | `data/spells.json` | `wand_preset.gd` |
| 敌人编辑器(可加) | `data/enemies.json` | `enemy_manager.gd` `_SPEED`/`_ARMOR` | | 敌人编辑器(可加) | `data/enemies.json` | `enemy_manager.gd` `_SPEED`/`_ARMOR` |
| 波次编辑器(可加) | `data/waves.json` | `wave_manager.gd` `WAVE_CONFIG` | | 波次编辑器(可加) | `data/waves.json` | `wave_manager.gd` `WAVE_CONFIG` |
| Core 编辑器(可加) | `data/cores.json` | `wand_preset.gd` `make_*_core` | | Core 编辑器(可加) | `data/cores.json` | `wand_preset.gd` `make_*_core` |
| 共鸣配方编辑器(可加) | `data/resonance.json` | `spell_evaluator.gd` `_resonance_recipes` | | 共鸣配方编辑器(可加) | `data/resonance.json` | `spell_evaluator.gd` `_resonance_recipes` |
实现参考 `addons/spell_editor/spell_dock.gd``@tool` 脚本 + `EditorPlugin.add_control_to_dock` + JSON 读写 + 对应 Manager 的 `_load_json_*()` 加载方法。 实现参考 `addons/game_designer/spell_tab.gd`(字段化表单)与 `core_tab.gd``@tool` 脚本 + 复用 `designer_ui.gd` 辅助 + schema 驱动的动态字段 + JSON 读写 + 对应 Manager 的 `_load_json_*()` 加载方法。
> **Godot 编辑器扩展能力**`EditorPlugin`(停靠面板/工具栏/底部面板)、`@tool`(脚本在编辑器运行)、`EditorInspectorPlugin`(自定义检视器)、自定义 `Resource``.tres` 自带表单)、`EditorScript`(一次性脚本)。与 Unity 的 EditorWindow/CustomEditor/ScriptableObject 一一对应,且与节点系统集成更紧。 > **Godot 编辑器扩展能力**`EditorPlugin`(停靠面板/工具栏/底部面板)、`@tool`(脚本在编辑器运行)、`EditorInspectorPlugin`(自定义检视器)、自定义 `Resource``.tres` 自带表单)、`EditorScript`(一次性脚本)。与 Unity 的 EditorWindow/CustomEditor/ScriptableObject 一一对应,且与节点系统集成更紧。