You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
AdLike2048/docs/方案-GM可视化模块.md

2.9 KiB

方案:可视化可扩展 GM 模块

更新日期:2026-10-16

1. 目标

将单文件输入型 GM(assets/script/game/GM.ts)重构为:

  • mx 通用壳:快捷按钮 / 滑动开关 / 内容面板,可拷到任意 Cocos 项目
  • 项目命令注册:业务 Action + 内容面板工厂,换项目整夹替换

2. 分层

层 路径 职责
框架 assets/mx/module/gm/ Registry、Host、Shell、View、内置面板;禁止依赖 script/
项目 assets/script/gm/ Host 注入、命令注册、表驱动 Picker、业务 Action

依赖方向:script/gm → mx/gm + Manager;mx/gm 绝不引用 script/。

3. 三种控件

Kind 用途 示例
Quick 一键动作 复制存档、每日重置、发宝石
Toggle 开/关 广告、营地免伤、商店无限
Content 可视化子页 道具图标点选、关卡列表、段位步进;JSON 用 textArea

4. 开发者扩展(优先用 GmEasy)

日常加功能只改 ProjectGmBootstrap._register,链式几行即可:

new GmEasy()
  .tab('常用')
  .btn('复制存档', () => copy())           // 快捷
  .sw('显示广告', () => on, v => set(v)) // 开关
  .num('金钱', () => get(), v => set(v)) // 数值设为+增减
  .page('道具', 'itemPicker', () => '点选') // 自定义面板
  .danger('重置', '确定?', () => reset())
  .text('存档', raw => apply(raw))
  .commit();

底层仍是 IGmCommand / GmRegistry;自定义面板:GmRegistry.registerPanel(id, () => new XxxPanel())。

内置面板 id:numberStepper、confirmQuick、textArea。

5. 换项目接入

  1. 拷贝 assets/mx/module/gm/
  2. 实现 IGmHost(约 30 行)
  3. new GmEasy()...commit() 写命令;需要时 registerPanel
  4. GmShell.bindHost + GmShell.show()

6. 本项目迁移

  • Toggle:广告、内购、商店无限、营地免伤、快速胜利
  • Quick:每日重置、复制存档、发宝石/武器、清地图、商店重置、排行测试等
  • Content:道具/BUFF/关卡/段位/货币/血量/存档;武器相关可打开原 PopGM
  • 删除帮助有、代码无的死条目;空实现等级命令不注册

7. 入口

  • 设置页 GM.show() → 委托 ProjectGmBootstrap.show() → GmShell
  • 挂载 UILayer.DeBug
  • 显隐受 IGmHost.isEnabled() 约束(浏览器或 sdkConfig.isOpenGM)
  • 旧 gm.prefab 已从 Boot 预载移除;武器等级/预设仍走 PopGM 预制体

8. 实现清单

模块 路径
类型/注册/壳/视图/内置面板 assets/mx/module/gm/
Host / Actions / Panels / Bootstrap assets/script/gm/
门面 assets/script/game/GM.ts(薄委托,无 EditBox/switch)

未迁入本版(原孤儿/死代码):玩家等级空实现、七十二变帮助项、指定背包文字(可后续加 Content)。