第四章 UI系统框架设计
我认为,UI是大部分游戏表现层面的灵魂。一个好的UI系统造就一个优秀的、可高复用的UI界面设计布局。游戏的大部分游戏功能也可以由UI界面引发,由此mmo游戏的功能便有了开发思路:你能在主界面添加哪种UI,便可以启动该种功能的开发。
教程将UI分为静态和动态部分
教程在UI系统框架设计部分并未涉及具体功能的实现,只实现了主UI界面管理和UI生成等功能,游戏大致如何设计初见雏形。
在UIMain中UIAvatar中体现角色信息,由UIMinimap管理小地图,由UISkillSlot管理技能的信息表现。在UIManager中实现各种功能的UI层入口,由此引发功能的开发,并保持一定的复用性和拓展性。其中最重要的是UIManager类,它关系了UI层与各系统功能。
在UIManager中定义了UIElement类,包含了UI界面实体的路径、是否隐藏以及用于接收的实例。
定义了字典保存UIElement
由于UIManager作为一个单例,需要在初始化时添加UIElement实例。测试UI加载如下:
在加载完成后需要完成一些逻辑,这里以显示UI为例:
以泛型T接收UI的类,保持UI自身的不同功能可以在不同系统中的拓展性。
初步逻辑是:调用Show时,传入对应UI的类,声音系统初始化完成提示音的调用
读取UI类型后,进行安全验证
安全验证后,进行实例化检查
若有实例,调用unity的显示方法
若无实例,先初始化游戏对象,对类型进行实例化
完成逻辑后,返回UI类型实例。
UIManager中的逻辑一般是每个UI类型实例应该包含的功能,比如显示、关闭等。完成逻辑后可以在unity中关联对应UI部分的实现事件,比如在每个UI的右上角的关闭按钮的点击事件关联关闭功能。事实上,教程的其他系统的UI互动方法也是这样实现的,只不过是关联了UI上的不同的位置、不同的事件。