R.E.P.O.
Install with App

Details

Latest version
0.2.0
Last Updated
First Uploaded
Downloads
899
Likes
2
Size
87KB
Dependants

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`
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.