MoreUIPanel
轻量右下角信息面板,提供 API 让其他模组注册自定义显示行。A lightweight bottom-right HUD panel with a public API for other mods to register custom display lines.MoreUIPanel
许可证:保留所有权利(All Rights Reserved)
本模组为原创作品,未经授权不得复制、移植或转载其代码。详见包内
LICENSE。
轻量右下角信息面板,提供 API 让其他模组注册自定义显示行。
版本:0.2.0
致谢
本模组核心 UI 框架抽离自 王子晨 (WZC_UI) 的 MoreUI 源码,已获得原作者授权。
概述
MoreUIPanel 是一个独立的 HUD 面板模组,从 MoreUI 源码中抽离出右下角文字显示框架,做成一个空的面板容器。它本身不显示任何游戏数据,只提供公开 API,让其他模组调用 RegisterLine 注册自定义信息行,统一刷新与渲染。适合搭配各类轻量功能模组使用,避免每个模组各自绘制 OnGUI。
说明
- 定位:这是一个库模组,作为其他模组的依赖使用,普通玩家无需手动安装。
✨ 功能
- 统一左下角文字面板,支持多模组注册信息行
- 可配置字体大小、位置偏移、透明度、刷新间隔
- 轻量、纯 OnGUI,无额外建模和网络
安装
- 确保已安装 BepInExPack
- 将
MoreUIPanel.dll放入BepInEx/plugins文件夹 - 启动游戏,模组会自动生成配置文件
⚙️ 配置
配置文件:BepInEx/config/cn_xc.MoreUIPanel.cfg(全中文)
| 配置项 | 默认 | 说明 |
|---|---|---|
启用面板 |
true | 是否显示面板 |
字号 |
20 | 文字大小(10~28) |
透明度百分比 |
70 | 文字透明度(1~100) |
刷新间隔秒 |
0.5 | 内容刷新间隔 |
拖动模式快捷键 |
F2 | 按一下进入拖动模式,再按一下退出并保存位置 |
🖱 拖动调整位置
怎么拖动 UI:进游戏后按 F2(默认)进入拖动模式 → 鼠标按住拖动 → 再按一次 F2 保存并退出。
想换键:改配置
[常规] 拖动模式快捷键 = F2,可填任意 Unity KeyCode(例如Escape、F3、Insert)。
拖动模式下的规则:
| 操作 | 效果 |
|---|---|
| 拖某一行 | 只移动该模组的那一行 |
| 拖空白处 | 移动整块面板 |
| 各行位置冲突 | 自动错开,互不重叠 |
| 拖出屏幕 | 被分辨率边界挡住;整体超出底部时自动上移 |
位置保存在插件目录的 panel.pos,下次启动沿用(不写进 cfg,避免手改数值)。
📋 已接入的模组
以下模组把 MoreUIPanel 作为必需依赖:未安装本库时它们不会加载。
| 模组 | 显示内容 |
|---|---|
| Sandevistan | 斯安威斯坦状态(开启中/冷却/待命 + 剩余秒数 + 下次第几次 + 免疫是否可用) |
| LateJoinSimple | 角色行 + 中途加入状态 + 房间类型/人数/玩家名单 |
| RunBasedPassives | 本局被动/升级状态统计(注册键 runbasedpassives_stats) |
🔌 开发者 API
API 已公开,完整文档见包内 API_REFERENCE.md。
// 简单注册(沿用全局字号)
MoreUIPanel.Plugin.RegisterLine("yourmod.status", () => "要显示的文字");
// 独立样式:该行用自己的字号与偏移(每个模组互不影响)
MoreUIPanel.Plugin.RegisterLine("yourmod.status", provider, fontSize: 16, offsetX: 0f, offsetY: -4f);
// 运行中单独调整
MoreUIPanel.Plugin.SetLineVisible("yourmod.status", false);
MoreUIPanel.Plugin.SetLineOffset("yourmod.status", 12f, -6f);
MoreUIPanel.Plugin.UnregisterLine("yourmod.status");
接入方式:[BepInDependency("cn_xc.MoreUIPanel")]。
❓ 常见问题
Q:为什么看不见面板?
A:检查是否有模组注册了显示行,并且 Enabled 为 true。如果没有注册任何行,面板会自动隐藏。
Q:如何调整位置?
A:修改 OffsetX 和 OffsetY 配置项即可,正值向上/左移动,负值向下/右移动。
Q:支持富文本吗?
A:支持 Unity 富文本标签,例如 <color=#ff0000>红色</color>。
API_REFERENCE.md markdown
MoreUIPanel API 参考
注册显示行
MoreUIPanel.Plugin.RegisterLine(string key, Func<string> textProvider)
参数
key:全局唯一标识,用于注销。建议使用模组名前缀,如 "mymod_stats"。
textProvider:无参数、返回 string 的委托。在刷新间隔触发时调用,返回的字符串将被显示。可包含 \n 表示多行。返回 null 或空白则跳过该行。
注销显示行
csharp
MoreUIPanel.Plugin.UnregisterLine(string key)
移除之前注册的 key。建议在模组的 OnDestroy 中调用。
控制面板可见性
csharp
MoreUIPanel.Plugin.Visible = false; // 强制隐藏
静态属性,设为 false 立即隐藏面板(即使有注册行)。设为 true 恢复。
完整示例
csharp
using BepInEx;
using MoreUIPanel;
[BepInDependency("cn_xc.MoreUIPanel")]
public class MyPlugin : BaseUnityPlugin
{
void Awake()
{
Plugin.RegisterLine("mymod_stats", () =>
{
return $"跳跃 Lv.{JumpLevel} ({JumpCount}/100)\n" +
$"力量 Lv.{StrengthLevel} ({GrabCount}/50)";
});
}
void OnDestroy()
{
Plugin.UnregisterLine("mymod_stats");
}
}
注意事项
委托应避免耗时操作,因为它在刷新线程(Update)中同步调用。
如果多个模组使用相同的 key,后注册的会覆盖前者。
面板默认左下角对齐,可通过 MoreUIPanel 的配置文件调整偏移和大小。
## 版权声明
- **版权所有 © cn_xc,保留所有权利**
- 部分 UI 框架参考自 **Zichen(WZC_UI)** 的 MoreUI,经原作者授权使用;原框架版权归原作者所有
- 允许:安装使用、调用公开 API
- 禁止:未经授权复制/移植/转载代码、反编译、二次分发、商用、移除署名
- 完整条款见包内 `LICENSE`
