在上一篇我们完成了 MainManager,今天我们再往下接着学习。
先列出 Manager Of Managers 如下:
-
(完成) MainManager: 作为入口管理器。
-
(已经有了) EventManager: 消息管理。
-
GUIManager: 图形视图管理。
-
AudioManager: 音效管理。
-
PoolManager: GameObject管理(减少动态开辟内存消耗,减少GC)。
-
LevelManager: 关卡管理。
-
GameManager: 游戏管理。
-
SaveManager: 配置&存储管理。
-
MenuManager 菜单管理。
接下来我们来做一个 GUIManager。
什么是 GUIManager
字如其意,是管理 UI 的,那么为什么要管理 UI 呢?又如何管理 UI 呢? 我们一个问题一个问题解决。
为什么要管理 UI 呢?
不管是做端游还是手游,都是是需要制作 UI 界面的。有的游戏需要上百个 UI 界面,有的只有几个 UI 界面的游戏,总之 UI 界面是有一定数量的。那么如果这些 UI 界面全部都放在场景里,那么在运行的时候则会浪费掉很多的内存,所以大家一般都是把每个界面做成 prefab 然后动态地进行加载和卸载。所以第一个结论是,我们要管理 UI 界面的加载和卸载。
当一个游戏的 UI 界面数量变多了的时候,在同屏下,很可能出现遮挡的情况,这时候呢,就需要管理 UI 的显示顺序,也就是 UI 的层级管理。
基于以上我们得出了两个结论,GUIManager 的职责为:
-
负责 UI 界面的加载和卸载。
-
管理 UI 层级
有了以上两个结论,我们就可以开始着手 GUIManager 的实现了。
从 UI 的使用习惯开始着手 GUIManager 的实现
以下部分的,大家不用跟着做,但是看完之后呢,要明白为什么 GUIManager 会设计成这样? 在笔者最开始接触 Unity 的时候,都是像如下图这样使用 UI 的。 这样使用 UI,在完成一些小的游戏的时候,没有太大的问题,但是一旦 UI 界面的数量变多了之后,我们游戏的内存就受不了了。 所以我们把 HomePanel、SettingPanel 等都统统做成了 Prefab,放在 Resources 目录下。 如下图所示: 这样,我们就可以根据需要,在合适的时候,可以对界面进行加载了。 加载的代码如下:

本文详细介绍了Unity中GUIManager的设计与实现,包括UI界面的加载和卸载、层级管理,以及如何优化UI显示。通过实例展示了如何创建GUIManager,处理UI的加载、设置层级和位置,并将其抽象为静态方法。最后讨论了静态方法带来的问题及解决方案,为后续的GUIManager改进奠定了基础。
最低0.47元/天 解锁文章
458

被折叠的 条评论
为什么被折叠?



