MoreUIPanel
Wang Zichen’s communication QQ group: 824639225, a lightweight information panel in the lower right corner, which provides an API to allow other modules to register custom display lines. A lightweight bottom-right HUD panel with a public API for other mods to register custom display lines.
About this mod Machine translation
markdown
MoreUIPanel
The lightweight information panel in the lower right corner provides an API for other modules to register custom display lines.
Version: 0.1.0
Acknowledgments
The core UI framework of this module is extracted from the MoreUI source code of Wang Zichen (WZC_UI), and has been approved by the original author.
Overview
MoreUIPanel is an independent HUD panel module. It extracts the text display frame in the lower right corner from the MoreUI source code and creates an empty panel container. It does not display any game data itself, but only provides a public API, allowing other modules to call RegisterLine to register custom information lines for unified refresh and rendering. Suitable for use with various lightweight functional modules to avoid drawing OnGUI separately for each module.
illustrate
- Positioning: This is a library module that is used as a dependency on other modules. Ordinary players do not need to install it manually.
✨ Features
- Unify the text panel in the lower left corner and support multiple module registration information rows
- Configurable font size, position offset, transparency, refresh interval
- Lightweight, pure OnGUI, no additional modeling and networking
Install
- Make sure BepInExPack is installed
- Place MoreUIPanel.dll into BepInEx/plugins folder
- Start the game and the module will automatically generate a configuration file
⚙️ Configuration
Configuration file location: BepInEx/config/cn_xc.MoreUIPanel.cfg
| Configuration items | Default value | Description |
|---|---|---|
| Enabled | true | Whether to enable the panel |
| FontSize | 20 | Font size (10-28) |
| OffsetX | 0 | Horizontal offset (negative values shift left, positive values shift right) |
| OffsetY | 0 | Vertical offset (negative values move down, positive values move up) |
| OpacityPercent | 70 | Text transparency percentage (1-100) |
| RefreshIntervalSeconds | 1.5 | Refresh interval (seconds, minimum 0.1) |
🔌 Developer API
See the accompanying API_REFERENCE.md for detailed usage.
❓ FAQ
Q: Why can’t I see the panel?
A: Check whether a module has registered the display line and Enabled is true. If no rows are registered, the panel is automatically hidden.
Q: How to adjust the position?
A: Just modify the OffsetX and OffsetY configuration items. Positive values move up/left, and negative values move down/right.
Q: Does it support rich text?
A: Support Unity rich text labels, such as red.
API_REFERENCE.md
markdown
MoreUIPanel API Reference
Register display line
MoreUIPanel.Plugin.RegisterLine(string key, Func textProvider)
parameter
key: Globally unique identifier, used for logout. It is recommended to use the module name prefix, such as "mymod_stats".
textProvider: A delegate with no parameters and returning string. Called when the refresh interval is triggered, the returned string will be displayed. Can contain \n to represent multiple lines. Return null or blank to skip the row.
Logout display line
csharp
MoreUIPanel.Plugin.UnregisterLine(string key)
Remove previously registered key. It is recommended to call it in the module's OnDestroy.
Control panel visibility
csharp
MoreUIPanel.Plugin.Visible = false; // Forced to hide
Static property, set to false to immediately hide the panel (even if there is a registered row). Set to true to restore.
Complete example
csharp
using BepInEx;
using MoreUIPanel;
[BepInDependency("cn_xc.MoreUIPanel")]
public class MyPlugin: BaseUnityPlugin
{
void Awake()
{
Plugin.RegisterLine("mymod_stats", () =>
{
return $"Jump Lv.{JumpLevel} ({JumpCount}/100)\n" +
$"Strength Lv.{StrengthLevel} ({GrabCount}/50)";
});
}
void OnDestroy()
{
Plugin.UnregisterLine("mymod_stats");
}
}
Things to note
The delegate should avoid time-consuming operations because it is called synchronously in the refresh thread (Update).
If multiple modules use the same key, the one registered later will overwrite the former.
The panel is aligned to the lower left corner by …
Install & use Install: BepInEx plugin
- The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
- Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
- Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
- Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.
Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file.
Install these first, or the mod will not work: