尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
deVoid UI Framework 架构设计解析:一条铁律如何拯救你混乱的 UI 代码
deVoid UI Framework 架构设计解析一条铁律如何拯救你混乱的 UI 代码【免费下载链接】uiframeworkThe deVoid UI Framework for Unity项目地址: https://gitcode.com/gh_mirrors/uif/uiframework做 Unity 游戏的人都懂那种痛HUD 挡在弹窗上、弹窗又挡住了主菜单屏幕之间互相持有引用改一个界面要翻半天代码。deVoid UI Framework简称 devUI是一个专为 Unity 设计的 UI 架构与导航框架它用一条铁律和分层结构帮你把混乱的 UI 代码整理得井井有条。本文带你从架构设计视角快速看懂它为什么能让 Unity UI 架构变得简单、清晰、可扩展。一条铁律外部代码永远不许直接碰 UI 内部整个框架的地基只有一句话外部代码永远不能直接访问 UI 的内部实现一切交互都必须通过统一入口。这条铁律的落点就是UIFrame—— 整个框架的中心访问点。所有打开窗口、显示面板、注册屏幕的调用都指向它它再向内部分层转发uiFrame.RegisterScreen(YourScreenId, yourScreenPrefab); uiFrame.OpenWindow(YourWindowId); uiFrame.ShowPanel(YourPanelId);好处立竿见影✅ 业务逻辑与 UI 实现彻底解耦UI 重构不影响玩法代码✅ 想读单例数据、上 MVC 或 MVVM 都行框架不干涉你 UI 内部怎么写✅ 每个 UIFrame 都是自包含结构甚至可以在同场景并存多个 UI分屏玩家专属 UI 就是这么实现的这条铁律的入口类见 UIFrame.cs。四层架构UI Frame → Layer → Screen → WidgetdevUI 的层级结构非常克制一层套一层职责单一层级职责对应源码UI Frame唯一对外入口门面模式UIFrame.csUI Layer管理某一类屏幕注册、显示、隐藏Core/AUILayer.csScreen具体界面Panel 或 WindowCore/AUIScreenController.csWidget屏幕内可复用的自包含小组件MANUAL 说明屏幕如何被注册才能使用这是框架的第二个关键约束任何屏幕必须注册到某个 Layer 后才能被显示。注册时框架会自动把屏幕的 Transform 重新挂载reparent到正确的图层下层级顺序从此不用你操心。注册逻辑见 Core/AUILayer.cs。Panel 和 Window两种屏幕各司其职这是新手最容易困惑的点也是框架最值得学的地方——它把屏幕明确分成两类 Window窗口有历史、有队列一次只能操作一个占满屏幕大部分区域是当前的主交互点内置历史栈Stack和队列Queue打开新窗口自动压栈关闭后回退到上一个标记为Pop-up的窗口会自动置顶并加上暗色背景天然的模态弹窗方案实现见 Window/WindowUILayer.cs其中windowQueue、windowHistory两个数据结构就是导航能力的核心。 Panel面板随手开关的碎片 UIHUD、血条、小地图这类想显示就显示的 UI无历史、无队列可以和多个其他 Panel 同时可见支持按Priority优先级挂到不同 Para-Layer控制谁画在谁前面实现见 Panel/PanelUILayer.cs。 默认渲染顺序PanelLayer → WindowLayer → PriorityPanelLayer → Pop-up 层 → 其他 Panel 层。过渡动画与输入拦截移动端 UI 的救命设计每个屏幕都内置AnimIn/AnimOut两个过渡插槽可挂载任意ATransitionComponent见 ScreenTransitions/ATransitionComponent.cs不挂则直接 SetActive框架也自带简单的淡入淡出实现ScreenTransitions/SimpleFadeTransition.cs。更贴心的是移动端最常见的 bug 是转场动画还没播完用户就点了下一个按钮。WindowUILayer检测到有过渡动画在播时会自动禁用 GraphicRaycaster 拦截一切用户输入动画结束自动恢复。相关逻辑见 Window/WindowUILayer.cs 与 UIFrame.cs。5 分钟上手三步跑通 devUI第 1 步在 Project 面板右键Create → deVoid UI → UIFrame Prefab把 Prefab 拖进场景。第 2 步注册你的屏幕每个屏幕用唯一 ScreenId习惯上直接用 Prefab 名。第 3 步调用OpenWindow/ShowPanel显示屏幕。如果嫌代码注册麻烦用内置的UI Settings一键配置Create → deVoid UI → UI Settings把 UIFrame Prefab 配成 UI Template把所有屏幕拖进注册列表之后一行代码拿到完整初始化的实例自动注册全部搞定uiFrame yourUiSettings.CreateUIInstance();配置类源码UISettings.cs。如何自定义你的屏幕类型安全的 Properties 传参屏幕的数据传递走Properties 负载机制类型安全是框架明确的设计目标继承AWindowControllerTProps或APanelControllerTProps重写OnPropertiesSet()—— 这是填充数据的最佳入口此刻Properties保证可用事件监听统一放在AddListeners()/RemoveListeners()中public class PlayerWindowController : AWindowControllerPlayerWindowProperties { protected override void OnPropertiesSet() { UpdateData(Properties.PlayerData); // 拿到 OpenWindow() 传入的数据 } }两个实战细节值得注意Properties 类必须加[System.Serializable]否则无法在 Prefab 上配置不给屏幕传参时框架会回退到Prefab 上预设的属性值编辑器就能预览默认状态完整的方法生命周期清单WhileHiding、Close()等见手册 MANUAL.md。这套架构解决了什么、又放弃了什么devUI 的取舍非常清醒它不强制MVC、不内置 MVVM、甚至不做手柄导航——框架只锁死统一入口 分层隔离这一件事其余全部放行。这是作者在多款移动端 F2P 游戏里打磨出的最小公约数也解释了为什么它简单到三步上手却撑得住中大项目的复杂度。 延伸阅读项目说明 README.md、官方手册 MANUAL.md总结一条铁律带来的秩序 一切调用走UIFrame入口UI 内部实现对外封闭 Frame / Layer / Screen / Widget 四层结构职责清晰 Window 管历史与队列Panel 管碎片 UIPop-up 天然模态 过渡动画可插拔转场期间自动锁输入 类型安全的 Properties 传参 UI Settings 一键初始化如果你正在被 Unity UI 的层级混乱和屏幕引用纠缠困扰这套架构值得作为你下一个项目的起点。【免费下载链接】uiframeworkThe deVoid UI Framework for Unity项目地址: https://gitcode.com/gh_mirrors/uif/uiframework创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

电动汽车SiC功率器件系列设计实战:从选型到调试全解析

电动汽车SiC功率器件系列设计实战:从选型到调试全解析

1. 为什么电动汽车的功率器件升级会落在SiC上“SiC Power Device Family Targets Electric Vehicle Needs”这句话,翻译过来就是“面向电动汽车需求的碳化硅功率器件系列”。我在功率半导体和电驱系统这块做了十来年,这两年明显感觉到,SiC已经…

📅 2026/9/25 13:56:25
3步上手XBImageFilters图像滤镜:XBFilteredImageView实战指南与常见问题全解析

3步上手XBImageFilters图像滤镜:XBFilteredImageView实战指南与常见问题全解析

3步上手XBImageFilters图像滤镜:XBFilteredImageView实战指南与常见问题全解析 【免费下载链接】XBImageFilters OpenGL ES 2-based image and real-time camera filters for iOS 项目地址: https://gitcode.com/gh_mirrors/xb/XBImageFilters XBImageFilter…

📅 2026/9/25 18:13:04
AmazonCrackedResource第3周刷题解析:滑动窗口与双指针组合拳,突破高频经典题

AmazonCrackedResource第3周刷题解析:滑动窗口与双指针组合拳,突破高频经典题

AmazonCrackedResource第3周刷题解析:滑动窗口与双指针组合拳,突破高频经典题 【免费下载链接】AmazonCrackedResource A List of frequently asked questions in Amazons Online Assessment and Interviews 项目地址: https://gitcode.com/gh_mirrors…

📅 2026/9/25 1:41:21
MORE NEWS

更多资讯

📰

成都新都电工证实操怕挂科?郑州报考避坑指南来了

成都新都电工证实操怕挂科?郑州报考避坑指南来了 实操考试心里没底怕挂科?很多电工朋友在准备成都新都电工证考试时,总担心自己动手能力不过关,结果一上考场就手忙脚乱。尤其是像新乡这样的建筑工地,电工证关系到作业安全,考不过就等于停工,损失可不是…

📰

岳阳市低压电工证复审机构真实经历:实操考试心里没底怕挂科

岳阳市低压电工证复审机构真实经历:实操考试心里没底怕挂科 实操考试心里没底怕挂科,这是很多准备考低压电工证的学员的共同感受。特别是像我这样来自驻马店的建筑工人,平时干的是体力活,突然要面对理论和实操并重的考试,压力真的不小。我当初就是在网上…

📰

电工证考不过丢人吗官方回应来了 你还在怕被中介坑吗

电工证考不过丢人吗官方回应来了 你还在怕被中介坑吗 不知道去哪报名怕被中介坑,尤其是像济源这样的三线城市,很多建筑工人第一次接触电工证报考,对流程、政策、费用一无所知。最近不少学员私信问我:“电工证考不过丢人吗?”这个问题背后其实藏着更大的…

📰

办理考电工证种类怎么填写需要什么材料

电工证种类怎么填写别再走弯路 电子证书考前必看 怕考不过白交培训费?我认识的几个老电工,就因为没搞清楚考电工证种类怎么填写,结果花了几千块培训费,最后连报名都没成功。别急,我来给你捋清楚。 案例背景:转岗电工的“迷雾”时刻…

📰

松江区考电工证焊工证全国通用怎么复审?过期了不知道怎么延期怎么办

松江区考电工证焊工证全国通用怎么复审?过期了不知道怎么延期怎么办 证书过期了不知道怎么复审延期?松江区考电工证焊工证全国通用,但很多人都没搞清楚复审流程,结果一不小心就错过了。这事儿我见过太多,有的师傅因为证过期被罚款,有的干脆被单位辞退,…

📰

工地太忙根本没时间复习考试 电工证还能复测吗千万别踩坑

工地太忙根本没时间复习考试 电工证还能复测吗千万别踩坑 工地上的节奏快得像打仗,早上刚安排完设备安装,下午又得盯着班组安全检查,晚上还得处理材料报备。这种情况下,谁还有时间复习考试?特别是像我们这种劳务班组负责人,手里攥着十几个人的饭碗,稍…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬