《UI框架—基于Unity5.4UGUI(一)》
来源:互联网 发布:linux 调用远程脚本 编辑:程序博客网 时间:2024/05/19 07:11
在这里和大家分享一下最近学习的一个UI框架,同时方便自己理解记忆和回顾。本UI框架是基于Unity5.4版本的,不过4.6版本以上应该都没问题。当然,你也完全可以使用NGUI插件完成UI部分,然后使用本框架实现逻辑部分。理解该框架之后,你不但可以利用该框架为你设计的游戏UI界面的处理服务,而且完全可以在此框架上继续拓展你自己需要的部分,使其更完善。
主要思想:栈的运用。使用一个栈来保存场景中的实例化出来的各个UI界面,使用Push()入栈方法显示栈顶界面,此时栈中其他界面不能交互。当关闭当前界面时使用Pop()弹栈方法关闭并移除当前界面,此时栈顶的元素变成第二个元素也就是第二个界面,该界面就重新获得交互能力。该栈使用一个管理类(UIManager)来进行维护。
想一想,当你制作一个游戏UI各个界面时,本来只想显示任务面板,但是在显示任务面板的同时,背包面板或者其他面板依然可以弹出来并且可以进行点击交互,这样给玩家的体验就太不好了。所以该框架重点在于各个UI界面的显示逻辑,并不在于优美的UI制作(UI的制作就自己动手实现吧)。也就是管理各个UI界面的显示和隐藏,还有控制各个UI界面何时可交互以及何时不可交互。在这里我使用一个类似RPG游戏UI方面来实现,一般来说,一个RPG游戏在UI方面分为以下几个方面:
1.主界面面板:承载主角的基本信息
2.任务面板:用于主角的任务处理面板
3.背包面板:用于存储主角的装备等
4.技能面板:用于存储主角的技能信息等,这里图示同上,我就不给出了
5.战斗:这里的战斗点击之后是主角会进入真实游戏场景中,就不在属于UI方面了,所以这里只是象征性的设计了一个按钮,并没有加以处理
6.商城面板:由于主角购买和售卖装备或物品等,图片同上(这里可以参考我的上几篇博客,其中详细的介绍了背包系统,准备系统和锻造系统。)
7.设置面板:用于设置游戏中的玩家体验效果如音量设置等,图片同上。
好了,简单介绍之后,先上一个简单易懂的整体框架图(双击查看大图哈),方便大家理解:
介绍一下这个框架图:
1.在图的左边部分UIPaneltype是每个UI面板的类型,对应上述各个面板介绍,在代码中使用一个枚举来存储,每一个枚举类型对应一个面板。再往下是UIPanelType.json,它是一个Json文件,保存的是每个面板和每个面板预设在工程文件中的路径信息,我们将会解析它来实例化一个个的面板,其中这里面板需要先制作好然后拖到Resource文件下做成一个预设,这样才能加载并实例化。
2.在图的中上部分GameRoot是用来启动一个UI框架的,需要挂载到一个游戏中的物体上,建议是Canvas上。图中的UIManager是整个UI框架的核心管理类,其功能如图中所诉。
3.BasePanel是每个面板的公共基类,这里设置一个公共基类是因为在各个面板都有相似的逻辑处理,比如在图中最右边页面状态流程图所示,每个页面都有其自身的状态,此时,只需要将这些状态封装成函数放在基类中并声明为虚函数,然后在子类中实现即可。
4.图中显示页面的容器栈就死该框架实现的数据结构,介绍如开始核心思想所诉。
5.图中的页面状态流程图:每个页面都有其自身的生命周期:显示状态、暂停显示状态、继续显示状态和界面退出状态。而每个状态的运用需要配合页面的容器栈来实现。
好了,总体概要差不多了。下一篇直接上代码了!
- 《UI框架—基于Unity5.4UGUI(一)》
- 《UI框架—基于Unity5.4UGUI(二)》
- 基于UGUI 的 游戏UI框架的一些想法
- Unity-UGUI框架<一>
- unity5.4 UGUI 手机屏幕自适应分辨率
- 【UGUI】Unity4.6 UI按钮绑定事件(一)
- unity3d基于ugui的ui模块
- UGUI UI框架实现遇到的问题
- unity3D(基于UGUI)网络游戏正在开发中 <一>"最近用UGUI做人物血条"
- UI游戏框架(一)
- UI(一)框架介绍
- UGUI——拖动UI
- webservice 基于axis1.4框架(一)
- UGUI学习笔记4——UI Events,Event Triggers
- unity——UGUI(一)
- Unity +HTC VIVE 虚拟现实开发— UI设计(UGUI)
- Unity5 雾化效果(一)
- VS2015 调试 UGUI (Unity5.5)
- cin<<、cin.get()、getline()(个人简单整理)黄刚的博客
- redis-[3]-redis数据库与事务
- 《机器学习》学习笔记七 聚类
- Android线性曲线视图
- 文件管理类
- 《UI框架—基于Unity5.4UGUI(一)》
- 关于安装版JDK1.8 1.7更改多个JDK环境变量 不生效
- 设计模式
- 糊糊的前端学习笔记——文章分享【Day2】
- osx中的环境变量设置
- JAVA集合类汇总
- 解决 anaconda3 安装 xgboost :/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found问题
- web前端练习笔记
- 《机器学习》学习笔记八 概率图模型