
窗口工具(GUI库 - 动画 - 网格对齐)
Window Utils是一个共享UI库,用于我的CET模组窗口的设置覆盖层。它还包含网格吸附、一些视觉特效和生活质量功能。
查看大图[img]https://i.imgur.com/ndQPERi.gif[/img]
Window Utils 是一个共享 UI 库和设置覆盖层,用于我的 CET 模组窗口(但对其他人也可能有用)。它的诞生源于我厌倦了在模组之间复制相同的样式代码、可折叠面板和按钮按住逻辑。LUT Switcher、Shift 以及我其他项目中所有可重用的内容最终都汇集到了这个库中。感谢 Spirit 的 Window Manager 插件,其他模组的窗口也可以实现网格吸附和动画效果。对于最终用户,这里有一个设置面板,可以自定义所有 CET 窗口的外观和行为。
适用于带有 [url=https://www.nexusmods.com/cyberpunk2077/mods/18448]Window Manager[/url] 的外部窗口管理,以及带有自定义图标和尺寸的任务栏的 [url=https://www.nexusmods.com/cyberpunk2077/mods/30005]Window Switcher[/url]。
核心理念
你是否曾经打开过十几个 CET 模组窗口,希望它们能自动对齐?Window Utils 为混乱带来了秩序。它为每个 CET 模组窗口添加了吸附网格、平滑动画、对齐参考线和背景效果,所有这些都可以在单个设置面板中进行配置。安装了 Window Manager 插件后,它会自动管理其他模组的窗口,无需集成。
功能特性
- 网格吸附: 窗口在拖动时会吸附到可配置的像素网格上。
- 平滑动画: 窗口以可配置的缓动和持续时间平滑滑动到吸附位置。
- 对齐参考线: 在吸附的窗口边缘会出现参考线。拖动时按住 Shift 可将移动锁定到单个轴。
- 羽化网格覆盖层: 一个视觉网格会在窗口周围平滑淡出,具有可配置的半径和曲线。
- 背景变暗与模糊: 将游戏世界在窗口后面变暗或模糊,以提高对比度。模糊需要 BlurUtils(可选)。
- 外部窗口管理: 自动将网格吸附和动画应用于其他模组的窗口,无需集成。需要 Window Manager 插件。
- 窗口浏览器: 在一个地方浏览所有已发现的 CET 窗口。启用/禁用窗口、切换关闭按钮、隐藏或忽略单个窗口。
- Window Switcher 集成: 与 Window Switcher 配合使用,提供带有自定义图标和每个窗口尺寸的任务栏。
- 每窗口覆盖: 为每个窗口配置网格、动画和行为设置。优先级链:主覆盖 > 每窗口 > 默认。
- 设置面板: 用于自定义所有行为的中央 GUI。可搜索的控件、右键单击重置为默认值、跨会话持久化。
- 教程与提示: 引导式演练和脉冲高亮,模组可以用它们来引导新用户。
使用方法
- 将 Window Utils 安装到你的 CET 模组文件夹中。
- 在游戏中打开 CET 覆盖层。
- 通过 CET 覆盖层访问设置面板,或在 CET 设置中绑定“切换 Window Utils GUI”热键。
- 调整网格大小、动画速度、视觉效果和每窗口设置。
- 所有设置都会自动持久化。
Window Manager 插件 (RedCetWM)
Window Manager 插件是一个 RED4ext 插件,它将窗口布局数据暴露给 CET 模组。Window Utils 使用它来实现:
- 覆盖所有窗口: 自动将网格吸附和动画应用于每个 CET 模组窗口,无需模组作者进行任何集成。
- 窗口浏览器: 浏览、搜索和管理所有已发现的 CET 窗口。
要求:
- 必须安装 RED4ext。
- 将 RedCetWM.dll 放入你的 RED4ext 插件文件夹(只需安装 CET Window Manager):
Cyberpunk 2077/red4ext/plugins/CET Window Manager/RedCetWM.dll
- Window Utils 会自动检测该插件。如果没有它,外部窗口管理功能将被隐藏,其他一切功能正常。
面向模组作者
通过将 ImGui.Begin / ImGui.End 替换为 wu.Begin / wu.End 来集成 Window Utils。网格吸附、动画和折叠跟踪会自动进行,无需单独的 Update() 调用:
local wu = GetMod("WindowUtils") or ImGui -- 使其成为可选
registerForEvent("onDraw", function() if wu.Begin("My Window") then ImGui.Text("Hello") end wu.End() end)
or ImGui 回退意味着无论是否安装了 Window Utils,这都能以相同的方式工作。仍然支持手动 Update() 集成,用于改造现有模组,详情请参阅 wiki。
绑定系统 - 控件库的核心。构建完整的设置面板,具有自动读写、右键单击重置为默认值、搜索变暗和保存持久化功能:
local c = wu.Controls.bind(settings, defaults, saveSettings, { search = mySearch, defs = myDefs })
c:SectionHeader("显示", "display") c:SliderFloat(IconGlyphs.Brightness, "brightness", 0, 10) c:Checkbox("VSync", "vsync") c:Combo(IconGlyphs.Palette, "theme", {"深色", "浅色"})
wu.Controls.unbind(c)
每个绑定的控件都会从你的设置表读取,在更改时写入,自动保存,右键单击重置,并在与搜索查询不匹配时变暗。无需为每个控件手动连线。
还包括: 样式化按钮、滑块、复选框、组合框、颜色选择器、输入框、工具提示、分割器布局、可展开面板、标签栏、拖放列表、Toast 通知、模态对话框、弹出面板、搜索过滤、图标浏览器和教程。
如需完整的 API 参考,请参阅模组附带的 docs/ 文件夹。
可选依赖项
- BlurUtils(即将在 XUtils 中推出):启用背景模糊效果。没有它,模糊切换将显示为禁用。
- Window Manager(RedCetWM RED4ext 插件):启用窗口浏览器和外部窗口管理。需要 RED4ext。
- Window Switcher:启用带有自定义图标和窗口尺寸的任务栏。
常见问题
- 问:其他模组是否需要更新才能使用 Window Utils? 答:不需要。启用 Window Manager 插件和“覆盖所有窗口”后,Window Utils 会自动管理任何 CET 模组窗口。
- 问:这会不会与其他模组冲突? 答:不会。Window Utils 不会修改游戏文件。它只影响 CET ImGui 窗口的行为。
- 问:我能否为特定窗口禁用它? 答:可以。使用窗口浏览器或每窗口配置覆盖。
- 问:如果我卸载它会怎样? 答:集成了 Window Utils 的模组会跳过
GetMod("WindowUtils")调用,并像以前一样工作。没有永久性更改。 - 问:模糊切换是灰色的? 答:安装 UXtils 以启用背景模糊(尚未发布)。
Wiki
[url=https://github.com/CyanideX/Window-Utils/wiki]https://github.com/CyanideX/Window-Utils/wiki[/url]
计划中
- 本地化
致谢
不分先后,向以下人员表示绝对的 [i][b]非常感谢[/b][/i]:psiberx、KeanuWheeze、spirit、misterchedda、anygoodname、Rayshader、ultramatt、lazorr、robber、Alithea、MartinVanStorm、Akiway、DZK、roms1383。❤️
如果我遗漏了其他人,我深表歉意。Cyberpunk Modding Discord 是我们拥有美好事物的原因,我感谢你们所有人的指导以及帮助我排除故障的意愿。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。