《UI框架—基于Unity5.4UGUI(一)》

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Say__Yes/article/details/74082785

在这里和大家分享一下最近学习的一个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.设置面板:用于设置游戏中的玩家体验效果如音量设置等,图片同上。

好了,简单介绍之后,先上一个简单易懂的整体框架图(双击查看大图哈),方便大家理解:

扫描二维码关注公众号,回复: 3788662 查看本文章

这里写图片描述

介绍一下这个框架图:
1.在图的左边部分UIPaneltype是每个UI面板的类型,对应上述各个面板介绍,在代码中使用一个枚举来存储,每一个枚举类型对应一个面板。再往下是UIPanelType.json,它是一个Json文件,保存的是每个面板和每个面板预设在工程文件中的路径信息,我们将会解析它来实例化一个个的面板,其中这里面板需要先制作好然后拖到Resource文件下做成一个预设,这样才能加载并实例化。

2.在图的中上部分GameRoot是用来启动一个UI框架的,需要挂载到一个游戏中的物体上,建议是Canvas上。图中的UIManager是整个UI框架的核心管理类,其功能如图中所诉。

3.BasePanel是每个面板的公共基类,这里设置一个公共基类是因为在各个面板都有相似的逻辑处理,比如在图中最右边页面状态流程图所示,每个页面都有其自身的状态,此时,只需要将这些状态封装成函数放在基类中并声明为虚函数,然后在子类中实现即可。

4.图中显示页面的容器栈就死该框架实现的数据结构,介绍如开始核心思想所诉。

5.图中的页面状态流程图:每个页面都有其自身的生命周期:显示状态、暂停显示状态、继续显示状态和界面退出状态。而每个状态的运用需要配合页面的容器栈来实现。

好了,总体概要差不多了。下一篇直接上代码了!

猜你喜欢

转载自blog.csdn.net/Say__Yes/article/details/74082785
今日推荐