UI框架

BaseUIForms类:

        四种状态:Display()--显示方法、Hiding()--隐藏、Freeze()--如果是弹出类型,则栈中上一个元素冻结也就是不能点了、ReDisplay()--如果是弹出类型,则栈中元素重新显示

窗体类型:Normal、Fixed(如主城界面中的一些诸如:商城、工会、任务、人物信息等面板)、PopUp

UIMgr类:

        维护各节点:根节点、Normal节点、Fixed节点、PopUp节点  --- 相应类型的窗口生成在它们下边

        字典:所有窗口的AllUIFormsDic、当前显示的CurrentShowUIFormsDic、窗体路径及其名称对应的PathDic、栈

        打开方法/关闭方法:分别根据当前窗口的类型做不同处理(通过switch)

                打开方法:

                    Normal类型:把当前窗体加载到CurrentShowUIFormsDic中,然后DisPlay()

                    反向切换ReverseChange类型:①当前栈中有无元素,有则“冻结”处理==>uiForms.Freeze( );

                                                       ②从AllUIFormsDic中得到指定name的窗体,有则Display(),然后Push进栈中

                关闭方法:

                        Normal类型:指定窗体隐藏uiForm.Hiding(),然后从当前显示CurrentShowUIFormsDic中移除

                        反向切换ReverseChange类型:①栈中元素==1,则Pop(),然后Hiding()即可

                                                                         ②栈中元素>=2,则Pop(),然后Hiding(),然后上一个窗体做重新显示处理(因为原来是Freeze):stack.peek( ),nextUIForm.ReDisPlay( )

            隐藏其他类型的打开和关闭:

                        打开:①把“正在显示集合”CurrentShowUIFormsDic与“栈集合”stackDic中所有窗体遍历隐藏:uiForm.Hiding( )   ②把当前窗体加入到“正在显示集合”中,然后做显示处理Display()


PS:栈部分,为防止多个系统之间的逻辑混乱(eg:商城系统、背包系统、任务系统都有栈类型的窗体),则添加一个清空栈操作即可,这样就可以保证打开不同系统返回时不会退回到其他系统。

模态管理(针对弹出窗体):设置遮罩状态方法

                    遮罩Mask显示,depth增大(UGUI是用SetLastSibling方法)、增加UICamera层深(保证比其他相机靠前渲染)

帮助工具类:节点查找、给子节点添加父对象、添加组件等公共方法

        节点查找:对当前物体做递归Find即可   外部只需Helper.Find(Gameobject obj,string name)调用即可

             

                


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值