Skip to content

菜单注入 ​

框架会在 Studio 顶部工具栏的 Help 右侧自动注入一个原生的 Mods 下拉菜单。它不是另画的一套 UI,而是克隆原生菜单节点做出来的,所以外观、交互、层级与 Studio 自带菜单完全一致。

内置菜单项 ​

菜单项快捷键动作
🧩 Mod 管理器F10打开运行时控制台
📂 打开 Mods 文件夹—在资源管理器中打开 Mods 目录

插件通过 StudioAPI.RegisterMenuItem(...) 注册的项会追加到同一个下拉菜单里。

注入过程 ​

  1. 定位锚点:在 MenubarForWindow 下找到 Help 菜单节点(按 Menubar_Help 组件或名称匹配)。
  2. 克隆节点:复制 Help 的 GameObject,命名为 Menubar_Mods。
  3. 剥离原功能:移除克隆体上的 Menubar_Help 组件,并清空指向 Help 弹窗的 Child 引用——否则新菜单会弹出 Help 的内容。
  4. 定位:计算位置,插到 Help 的右侧。
  5. 改写文本:把显示标签(valueLabel 及各层 UILabel)统一改成 Mods。
  6. 重建弹窗:克隆 Help 的 popup 预制体(Mods_PopUpList_Prefab),替换为 Mods 自己的菜单项;同时挂上 onPopup 回调,保证实例化时弹出的就是定制内容。

整个过程是幂等的:检测到 Menubar_Mods 已存在就直接返回,不会重复注入。失败时记录 Failed to inject Mods menu bar 并附带异常。

样式兼容 ​

菜单项沿用 Studio 原生预制体的双标签排版:

  • Text —— 主标题
  • ShortCutText —— 右侧快捷键,自动右对齐

另外还有几项自动处理:

  • 快捷键提取:菜单名写成 "功能名 (F10)" 时,框架自动把 "F10" 解析出来放到右侧快捷键位。
  • 动态宽度:按最长文本 + 快捷键计算宽度(最小 200px),同步更新背景与边框尺寸,避免文字截断。
  • 点击防抖:内置 0.35 秒防抖,防止误触双击重复执行耗时逻辑。

给插件作者的提醒 ​

RegisterMenuItem 负责注册原生菜单入口,点击后可以打开 NGUI 或 WebView2 窗口,两种方案都属于正式 Mod 窗口。选型、线程和清理要求见 Mod 窗口开发规范。

为 BrickLink Studio 2.0 打造的第三方 Mod 加载框架 · 与 BrickLink / LEGO 官方无关联