请注意,本模组目前已进入维护状态。
本模组目前将不会再引入新功能或进行重构,仅接受反馈并修复各类可能导致游戏无法正常运行的恶性 Bug。
该状态将从今日 (2025 年 10 月 24 日) 开始持续约一年。
当前版本 (自 v5.0.0) 目前是较为稳定且可用的。
最近一段时间,我在进行 UIUtil 的内核重构时遇到了一些瓶颈,加上现实生活中的一些事情,让我感觉精力消耗很大,有些不堪重负。作为一个开发者,我现在无法对我已经编写的一部分代码、以及正在编写的代码感到满意。
为了处理现实中的事务,并防止在较差的状态下产出低质量的代码,我决定暂停目前所有的 Mod 开发活动,可能离开近一年左右的时间。
**关于 UIUtil:**
* 正在进行中的重构工作(包括内核重构,以及计划中的 API 重构)已经存档封存,待我回归后会重新评估。
**关于未来的新项目(某种形式的 Roguelike):**
* 这是一个让我非常兴奋的想法,但它的复杂性也非常巨大。我会将目前所有的设计文档整理好,等待一个更好的时机来启动它。
Modding对我来说是创造和分享的乐趣,我不想让它变成一种负担。感谢大家的理解,我们未来再见。
|
---
这是一个 UI 前置,提供两大功能:
- Disk 系列的指令轮盘
- UI 系列的UI面板
## ——是否想象过使用轮盘调出你的技能?
## 或者用轮盘发送战斗骚话?
#### 我制作了指令轮盘功能,并加入这个前置模组发布出来,可以满足大家的设想
- 提供测试战役,快速测试这个模组的功能能否在你的设备上正常运行
- 提供benchmark,测试 UI 面板和可编程管线对你的设备能造成多大负担!
- 提供一个 UIUtil 演示实例: 经典的贪吃蛇游戏!不知道你能否通关...
- 局内效果展示
## 你作为 Modder 可能关心的
- 对于不支持 **GL42**,**GL43** 的设备,该模组无效
- 该模组使用 **BoxUtil** 的目的是编译着色器以及高效渲染文本
- 本项目基于 MIT 许可证授权
## 如遭遇 Bug ,或有其它需求,请积极反馈
##
UIUtil使用文档
UIUtil.rar
(192.44 KB, 下载次数: 2196)
- 25/5/3 补丁更新 v1.0.2 - 将默认键位改为 H
- 25/5/10 增加英文版 English version added
|
- 25/5/28 主要更新 v2.0.2:
1. 增加 SelfUIRenderEngine 以及UI系列控件,提供高度动态的战场UI
2. 修复在一些设备由于驱动版本不一导致原本未发现的纹理单元绑定问题
3. 增加 Benchmark 战役
4. 当然了,模组改名 UIUtil (原DiskPanelUtil)
- 25/6/6 小型更新 v2.1.2:
1. 英文版转移至官方论坛
2. SelfUIRenderEngine 增加一系列 get 方法
3. 修复 SelfUIFrame 以及 SelfUIBanner 使用 MID 相关的 Distribution 时的 bug
4. 修复 SelfUILabel 尺寸 bug
5. 为 SelfUIRenderEngine 和 SelfUIComponent 的 render方法增加 mult 参数
- 25/6/8 小型更新 v2.2.2:
1. SelfUIDynamic 的 stress 改为 decorated
2. 接口 SelfUILayoutBlock 增加 customData 相关方法
3. 增加 SelfUIStatic 类,用于初始化内容
4. 修复由于驱动问题导致的着色器编译bug
5. SelfUILabel 的文字尺寸将适应文字比例,而不是原本的强制伸缩
|
- 25/6/29 主要更新 v3.2.2:
1. 对 UI 面板相关代码进行了大规模重构,主要内容如下:
1. 构造方式改为链式调用(或流式)
2. SelfUIWidget不再管理更新和渲染,而是由 SelfUIRenderer 等功能接口实现
3. 现有 3 种坐标系:offset, location, absLocation;分别是:相对于 siblings,相对于父亲,相对于整个 UI 面板,后两者都计算自 offset
4. 加入 lock 机制,禁用一些操作(设置父亲,添加子节点)
2. 加入 一系列 SelfUIListener, SelfUIListenerManager, SelfUIFactory
3. 加入控件 SelfUICheckBox (选择框)可在战局内点击
4. 自动适应位置和尺寸改变
- 25/7/6 小型更新 v3.3.2:
1. 进一步重构:
1. 移除了 SelfUIWidget 接口,而是使用一个基类
2. 为各种类加入 destory() 方法,进行资源控制
2. 减少固定管线的使用,使用着色器等现代特性
3. 加入 SelfUIShaderRenderer 类,提供现代渲染器基类
4. 加入了演示实例,可以玩
- 25/8/9 小型更新 v3.4.2:
1. 进一步重构:
1. 布局功能, 挂载功能从 SelfUlWidget 中移除并交由 SelfUlLayoutInfo 和 SelfUIRegistry 管理
2. 增加 SelfUlLayoutUpdater ,用于自定义布局方式
3. 移除了 SelfUlÉngine 的 render 和 advance 方法,可以使用 setter 控制 isWorking 和调整 location, scale
4. 所有的渲染,监听, 更新工作交由 Manager 系列类管理, 带来了一定性能优化
5. SelfUlEngine 在完成初始化后需要调用 submit 方法才会加入池中并进行渲染等工作
2. 加入新控件: SelfUlButton, SelfUlEntry, SefUlTypeArea 以及一个原版风格的 frame 组件 SelfUlVanilaTooltipFrame
3. 加入新 renderer:SelfUlBorder
4. 以及修复一些 Bug 和优化工作
5. SelfUIRegistry 提供了基于 自定义ID, 类型以及绑定模式的插件获取方式,便于插件之间相互联动
|
- 25/9/21 主要更新 v4.4.2:
1. 加入 ImGUI 风格的构造流程: SelfUI
2. 加入了 SelfUIBuilder 类以及 SelfUIDataBuilder 类, 定义了类型安全且流畅的构造规范, 支持自定义 Builder 并能无缝链接
3. 加入了 SelfUILayoutMode 类以及其静态实现的容器类 SelfUILayoutModes, 并且支持自定义布局模式
4. 加入了 SelfUIGrid, SelfUIFlow, SelfUIAbs 基础布局算法
5. 加入了 SelfUISession 接口并将 SelfUIEngine 抽象为该接口
6. 重新规范了 SelfUIFactory 以及各控件类的构造方式
7. 规范了生命周期管理: 实现了 SelfUIDisposable 接口的挂载被添加后会自动进入生命周期管理
8. 加入了新控件 SelfUISlider 以及其垂直和水平实现
9. 为 SelfUIWidget 添加了 move 和 swap 方法, 支持运行时修改结构
10. 为 SelfWidget 添加了 working 状态及其 GS 方法
11. 为 SelfUITextField 添加了字体大小设置
12. 为 SelfUIButton 添加了 isClicked 方法, 获取当前帧的点击状态
13. 为 SelfDiskPanelPlugin 加入了切换选项时播放的音效及其配置
14. 为 SelfUIMouseListener 的监听方法加入参数 boolean hit 从而不再需要手动命中检查, 鼠标事件现在只会命中最上层的监听器
15. 优化了 SelfUIColorSpan 和 SelfUISprite 的着色器
16. 修复了 SelfDiskPanelPlugin 无法正确清除缓存的问题
17. 修复了 SelfDiskPanelPlugin 的选项偏移问题
18. 修复了 SelfUIEntry 不能清空光标的问题, 并优化了其代码
19. 修复了 engine.scale 没有被正确应用的问题
20. 修复了在一些设备上的闪烁问题
21. 修复了各 Manager 添加挂载的并发修改问题
22. 移除了 SelfUIRenderer 的 init 方法和 destory 方法
23. 清除了垃圾代码
24. 规范了一些注释的格式
- 25/9/21 补丁更新 v4.4.3:
1. 修复了挂载顺序混乱的问题
2. 优化了 SelfUlVanilaTooltipStyle 的性能表现
- 25/9/30 小型更新 v4.5.3:
1. 为 SelfUILayoutMode 应用泛型标记其 SelfUILayoutData, 使 getLayoutData 系列方法不再需要强制类型转换
2. 加入 SelfUIFlex 布局
3. 修复了 SelfUIButton 鼠标悬浮不高亮的问题
4. 修复了 SelfUIIMContext 下样式被反复应用, 导致渲染实体持续增加的问题
5. 为 SelfUIFactory 增加 asConfiguringView(SelfUIWidget widget) 方法,
并修改了 SelfUIBuilder(SelfUIWidget widget) 构造方法的可见性,
从而规范了 SelfUIWidget 的修改流程
- 25/9/30: 补丁更新 v4.5.4:
1. 修复了 SelfUIFlex 无法正确跳过不工作控件的问题
- 25/10/04 小型更新 v4.6.4:
1. 加入了 SelfLineDrawer 并改善了线条渲染
2. 现在可以在生涯地图中创建窗口坐标的 UI 面板
3. 加入了 SelfUINone 布局模式
4. 为 SelfUIWidget 添加了 LogicalWidget 机制,以规范复合组件的行为
5. 将两种方向的滑块统一为 SelfUISlider
6. 为 SelfUIMouseListener 的各方法添加了 hover 参数, 以支持更复杂的鼠标行为
7. 删除了 SelfUIColorSpan 以及 SelfUISprite 中 submit 方法的无用参数
8. 删除了 SelfUILayoutMode 中遗留的测试代码
9. 修复了实现多个 Listener 接口的监听器,无法被正确加入多个监听器列表的问题
10. 修复了 SelfUIDestructionManager 的并发修改问题
11. SelfUIWidget 的 addItem() 方法已重命名为 addChild()
12. SelfUIWidget 的 update 方法不再支持链式调用
13. SelfUIWidget 的默认布局模式已更改为 None
-25/10/05 补丁更新 v4.6.5:
1. 修复了缺少各 与 LogicalChild 相关方法 的问题
2. 修复了 SelfUICampaignInterface 无法正确序列化导致无法重新添加 UI 面板的问题
3. 为 UIUtilGlobal 增加了新的方法 isCampaignStatusReady() 来保证 UI 面板被创建时 BoxUtil 已经准备好
|
- 25/10/07 主要更新 v5.0.0:
1. 修正了包结构规范以防止潜在的命名冲突(抱歉)
2. 规范了版本控制
3. 正式停止对 0.97 版本的支持
4. 删除了 SelfHandler 和 SelfSupplier 接口
5. 现在 SelfUIButton 支持传入回调函数
- 25/11/15 补丁更新 v5.0.1:
1. 为所有管理类改用命令缓冲以修复并发修改问题
2. 删除了冗余和垃圾代码(InstancingManager, "oo")
3. 删除了 SelfUIEntry 类,现在只能通过 SelfUIFactory 类相关方法创建 Entry
4. 移除了 SelfUITextField 的 getEntity() 方法,并添加了直接传入 Supplier<TextFieldEntity> 的构造函数
5. 增加了 不设置回调函数的 SelfUIButton 构造函数
6. 略微优化了 SelfUIColorSpan 的性能
7. 修复了 SelfUISlider 的显示 Bug
|
|