当前位置: 首页 > article >正文

【Unity3D】基于UGUI——简易版 UI框架

https://github.com/AMikeW/BStandShaderResources/blob/master/milk_UIFramework.unitypackage

UI框架支持如下功能:

1、层级控制
2、支持面板多次打开时,隐藏前一个打开的面板,当关闭面板时,能够恢复前一个打开面板状态
3、支持面板多个同时显示
4、支持全屏面板打开时,隐藏全部UI;全屏面板UI关闭时,恢复全部UI;并兼容多次全屏面板打开时,对前一个全屏面板的隐藏。
5、支持对长时间不活跃的面板销毁回收操作

可扩展优化点:
1、更具体的面板资源卸载回收
2、全屏界面打开时,精确隐藏全屏界面之前的界面,而不是全部。
3、扩展UIView类:支持动画打开、关闭;支持界面BGM配置
4、Unity编辑器扩展开发一个自动生成C#类脚本工具?根据简易配置,快速搭建UI和创建UI脚本以及自动生成UI相关序列化数据文件。
5、扩展UGUI的组件,例如:ScrollView 扩展无限循环列表;下拉列表扩展... ; 支持无渲染的可点击图片等等...

讲解部分:

UI资源加载器(UIResourcesLoader类)
        同步、异步加载面板预制体接口

面板数据(UIWindowData类)
        名称、预制体路径、层级名称、是否允许同时显示多个、是否全屏

UI管理器(UIManager类)
创建面板
        面板由窗体(UIWindow类)持有
        窗体类
                窗体名称(与面板名称一致)、活跃面板栈、不活跃面板队列、面板状态数据栈
销毁面板
打开面板
        若打开的面板不允许同时显示多个,检测到已有同名面板处于Active状态(通过检查面板所属窗体对象的活跃面板栈>0)则对显示中的同名面板进行【特殊关闭】,并缓存面板状态数据放入窗体对象的【面板状态数据栈】,以备恢复面板使用。
        若打开的面板是全屏UI,则打开后对所有活跃的面板Hide。

关闭面板
        关闭当前面板前,若关闭的面板是全屏UI,且【全屏UI活跃数】== 1 时,则进行恢复显示出全部被隐藏的活跃面板。
        关闭当前面板后,创建一个回收面板计时对象(持有回收倒计时、面板View对象)等待回收,如果再次激活被关闭的面板对象则会销毁回收面板倒计时对象。
        关闭当前面板后,检查面板窗体对象的不活跃面板队列>0,且【面板状态数据栈】>0时,则需恢复同名面板的【特殊显示】。

【特殊关闭】和【特殊显示】不会对【全屏UI活跃数】产生影响。
【全屏UI活跃数】位于UIView类的Open和Close分别进行++和--操作(仅当isSpecial为假时)


http://www.kler.cn/a/464329.html

相关文章:

  • xdoj ROT13加密
  • MySQL 05 章——排序与分页
  • 六十一:HTTP/2的问题及HTTP/3的意义
  • 在 macOS 上,你可以使用系统自带的 终端(Terminal) 工具,通过 SSH 协议远程连接服务器
  • PyTorch AMP 混合精度中grad_scaler.py的scale函数解析
  • 路径规划 | 基于极光PLO优化算法的三维路径规划Matlab程序
  • PgSQL如何用cmd命令行备份和还原数据库
  • SQLALchemy如何将SQL语句编译为特定数据库方言
  • Windows11 安卓子系统存储位置更改
  • 论文分享—供应链不安全:软件物料清单(SBOM)解决方案中缺乏完整性保护
  • Linux中sed命令的使用技巧
  • 计算机毕业设计hadoop+spark+hive民宿推荐系统 酒店推荐系统 民宿价格预测 酒店价格 预测 机器学习 深度学习 Python爬虫 HDFS集群
  • httpx.AsyncClient报错ProxyError: 504 Gateway Time-out
  • [CTF/网络安全] 攻防世界 Web_php_unserialize 解题详析
  • [算法] [leetcode-349] 两个数组的交集
  • [网络安全] DVWA之CSRF攻击姿势及解题详析合集
  • SAP SD学习笔记23 - 无偿出荷(免费交货)与继续无偿出荷(继续免费交货)
  • OpenCV-Python实战(15)——像素直方图均衡画
  • stm32 智能语音电梯系统
  • [AHK]用大模型写ahk脚本
  • Android Camera压力测试工具
  • 《代码随想录》Day23打卡!
  • Wonder Dynamics技术浅析(四):表情捕捉与面部动画
  • 服务器systemctl命令使用与go项目zero框架中实战
  • android.enableJetifier=true的作用:V4包的类自动编程成了androidx包的类,实现androidx的向下兼容
  • SpringMVC(1)——SpringMVC配置和基本原理