Skip to main content
ARShow
ARShow
ARShow
 首页 » 资源教程

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

2017年04月20日 20:41:129180蛮牛网

 【游戏UI框架设计】窗体的层级管理 资源教程 第1张

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

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

【游戏UI框架设计】窗体的层级管理 资源教程 第2张

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

【游戏UI框架设计】窗体的层级管理 资源教程 第3张

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

【游戏UI框架设计】窗体的层级管理 资源教程 第4张

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

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

【游戏UI框架设计】窗体的层级管理 资源教程 第5张

 

【游戏UI框架设计】窗体的层级管理 资源教程 第6张

【游戏UI框架设计】窗体的层级管理 资源教程 第7张

 

请点击此处输入图片描述【游戏UI框架设计】窗体的层级管理 资源教程 第8张

【游戏UI框架设计】窗体的层级管理 资源教程 第9张

【游戏UI框架设计】窗体的层级管理 资源教程 第10张

【游戏UI框架设计】窗体的层级管理 资源教程 第11张

【游戏UI框架设计】窗体的层级管理 资源教程 第12张

【游戏UI框架设计】窗体的层级管理 资源教程 第13张

【游戏UI框架设计】窗体的层级管理 资源教程 第14张

【游戏UI框架设计】窗体的层级管理 资源教程 第15张

以上代码解释:

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

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

常用属性与方法:

Count 属性 查询栈内元素数量

Push() 压栈

Pop() 出栈

Peek() 查询栈顶元素

GetEnumerator() 遍历栈中所有元素

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

评论列表暂无评论
发表评论