发布时间:2017-01-24责任编辑:朱明 浏览:1543
在游戏中存在着大量的界面,这些界面有着不同的逻辑和功能,这些界面需要有一个统一的管理方法,下面我分析一下我对UI管理的理解。
界面的类型
界面主要分为四种形式
正常界面

需要有先后顺序,有打开和关闭功能,关闭按钮一般为返回的样式,打开后记录打开顺序并可以关闭返回到之前打开的界面
固定界面

固定不动,没有打开方式和关闭方式,不能遮挡其他固定界面,通常多个界正常面共用一小块的一样的UI时,将这一块独立出来设置为固定界面。
弹出界面

打开后不会做记录,关闭按钮一般都设置为关闭的意思,并不会出现返回的样式。所有弹出界面在正常界面之上
消息界面

与弹出界面类似,但消息界面上无按钮,或者只有关闭按钮,一般消息界面会在一段时间后制动关闭。所有消息界面在弹出界面之上。
界面的排序
这四类界面排在最前端的是:消息界面>弹出界面>固定界面>正常界面。将这四类界面分别放在四个不同的根节点下,并且保证他们的顺序正确,这样就能保证大的分类顺序不会出错。

在同一类的界面中也需要进行排序,比如A界面和B界面都是正常界面,如何对他们进行排序呢,我们使用栈来管理,后进入的放在最上面,也最靠前显示,关闭的界面就移除栈顶的界面。
如果界面中包含3D元素,还需要考虑界面的厚度,不仅需要在层级上排序,在厚度上也需要排序
界面的方法和属性
界面的显示顺序的思路有了,就需要考虑界面内部有哪些方法和属性了
类型属性
根据类型来放置ui的位置
全屏属性
如果为全屏,那么同一栈中该界面之下的界面就可以关闭了。
厚度的属性
某些时候界面上需要显示3D模型,如果界面在栈中那么需要根据厚度将栈之后的界面统一后移,防止界面穿帮,有点类似于排队的感觉。
打开后的委托
有些时候会有前往功能,比如A界面要前往到C界面,但又必须经过B界面,那么我们就可以打开B界面,并在委托里写入打开C界面,就可以实现A界面前往C界面了,这只是一个简单的例子。
关闭后的委托
与打开后的委托类似,在关闭界面的时候调用
初始化方法
界面初始化,只需要运行一次
刷新方法
每次打开界面都会调用的方法,刷新界面数据
上层界面关闭后的刷新方法
当界面在栈中,并且之上的界面刚好关闭,执行的方法,通常也是刷新界面
关闭界面的方法
打开界面的方法
界面管理的方法
界面的方法和属性有了,还需要一个统一的管理者来管理这些界面,这个管理者应该有以下基本功能
登记注册所有界面的方法
关闭所有界面的方法
显示某个界面的方法
关闭某个界面的方法
关闭正常界面中栈顶界面的方法
某个界面是否打开的方法
获取某个界面的方法
以上是我通过观察其他游戏UI表现并结合战国跑酷中对UI管理方法得出的结果,思路如果不对还请提出建议。
战国工作室 供稿