上一篇:讲解了UI层的设计原则,这篇说说UI集合的实现。
UI集合:给UIManager提供管理多个UI的功能
分析之前先看图
UI集合是承上启下的一个中间层,给UI管理层提供管理多个UI的功能。
UI集合的生命周期:加载,打开,关闭,卸载(关闭的一种)。
UI集合基于状态管理:
加载:
- 因为一个集合里面有多个UI,所以判断集合加载完成的条件是:UI集合内的所有UI全部加载完成。
- 如果在一个没有UI的场景里面加载一个UI,那么就会出现因UI还在加载中而出现的瑕疵:能看到场景,可能只有一帧的时间。如果只是这个瑕疵我们其实可以不用解决,关键问题是如果场景这个时候存在交互,没有UI层拦截事件的话,你很有可能触发一个流程外的操作,这个就不能接受了啊。所以我们需要加入一个屏蔽UI,这个屏蔽UI是常驻内存的,所以不存在加载的问题,这样的话,在每个UI加载的过程中,这个UI都会存在,直到目标UI加载完成。
代码解释如下:
打开UI集合
就是简单的打开当前的待打开列表的UI,UI的状态变成已打开。
代码解释如下:
关闭UI集合
- 关闭UI集合并且UI集合的状态变成等待打开中:
在关闭前保存UI的状态信息,目的是为了返回时恢复。 - 关闭UI集合并且UI集合的状态变成已关闭:
直接关闭所有的UI,不再做其他处理。 - 关闭UI集合中的某个具体UI:
UI集合内有一个主UI,只要我们关闭的不是主UI,那么这个UI集合就不会被关闭,而是关闭你想关闭的具体UI。
代码解释如下:
UI集合卸载
也是关闭的一种,只不过在关闭UI集合后,选择要不要卸载UI集合 。以节约内存。
项目地址:https://github.com/xiaoyanxiansheng/SmallEyeGame
下一篇:UI管理