【游戏UI框架设计】窗体的层级管理

  • A+
所属分类:资源教程
摘要

 UI框架中UI窗体的“层级管理”,最核心的问题是如何进行窗体的显示管理。窗体(预设)的显示我们前面定义了三种类型: 普通、隐藏其他、反向切换。代码如下:

 【游戏UI框架设计】窗体的层级管理

UI框架中UI窗体的“层级管理”,最核心的问题是如何进行窗体的显示管理。窗体(预设)的显示我们前面定义了三种类型: 普通、隐藏其他、反向切换。代码如下:

“普通显示”模式允许多个窗体同时显示,这种类型应用最多。例如RPG中的主城界面(见下图)。

【游戏UI框架设计】窗体的层级管理

“隐藏其他界面” 模式一般应用于全局性的窗体。我们在开发此类窗体时,为了减少UI渲染压力、提高Unity渲染效率,则设置被覆盖的窗体为“不可见”状态。(即: this.gameObject.SetActive(false))。例如一般的登录窗体、选择英雄窗体等。

【游戏UI框架设计】窗体的层级管理

“反向切换”模式类型,一般都大量引用于“弹出窗体”中。此类窗体的特点是:显示弹出窗体时不完全覆盖底层窗体,一般在屏幕的四周会露出底层窗体。之所以命名“反向切换”是因为: 程序员要维护一种“后进先出”的“栈”的数据结构特点,即我们一般要求玩家必须先关闭弹出的顶层窗体,再依次关闭下一级窗体。如下图所示。

【游戏UI框架设计】窗体的层级管理

上图即一种典型的弹出窗体。一般我们都要求玩家先处理弹出窗体中的信息,然后关闭此窗体。一般不允许在没有关闭子窗体的情况下,直接点击父窗体。(关于弹出窗体时,不允许玩家点击父窗体的功能实现,笔者在下节[“模态窗体管理”]一章着重讲解)。

以上说了这么多了,我们对于“层级管理”的核心代码实现,基本都体现在“UI管理器脚本” (UIManager.cs )中。以下给出具体实现代码:

【游戏UI框架设计】窗体的层级管理

 

【游戏UI框架设计】窗体的层级管理

【游戏UI框架设计】窗体的层级管理

 

请点击此处输入图片描述【游戏UI框架设计】窗体的层级管理

【游戏UI框架设计】窗体的层级管理

【游戏UI框架设计】窗体的层级管理

【游戏UI框架设计】窗体的层级管理

【游戏UI框架设计】窗体的层级管理

【游戏UI框架设计】窗体的层级管理

【游戏UI框架设计】窗体的层级管理

【游戏UI框架设计】窗体的层级管理

以上代码解释:

1: UIManager.cs 中定义的新的字段 ,“_StaCurrentUIForms” 就是一个“栈”数据类型,用于维护一种后进先出的数据结构。常见的方法如下:

C#语言中提供 Stack 泛型集合,来直接实现这种结构。

常用属性与方法:

Count 属性 查询栈内元素数量

Push() 压栈

Pop() 出栈

Peek() 查询栈顶元素

GetEnumerator() 遍历栈中所有元素

2: UIManager.cs 中的“ShowUIForms()”方法中的120行与123行,就是专门处理“反向切换”与“隐藏其他”窗体特性的实现方法。

  • 领支付宝红包
  • 扫一扫领红包
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
admin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: