Unity 自主学习之用设计模式模拟王者荣耀(二)-- 中介者模式搭建英雄选择界面

效果图:

UI搭建:

首先这个界面里面分为4个UIPanel(关于Panel的UI框架我以前的博客里面有介绍,这里就不再赘述),分别未:

SelectModelPanel:

就是最开时的时候那两个并列的选择框,这种选择框用到了ScrollRect,而关于这种面板的介绍我也在以前的博客里面有过介绍,后面同一补充链接。只是这里的ScrollRect用的是GroupLayout,还有要注意的是,这里的ScrollRect为了不让他在拖动到顶部或者底部的时候反弹,我给它添加了一个脚本来 限制它的滑动,代码及结构如图:

添加的代码:

PS:还要注意一点就是Content的锚点要设置考上,不然会出现反弹效果不正常的现象。代码里面的UIMsgAgent就是本文要讲的中介者模式的实现类,后面再具体讲解。

UnfoSelectPanel:

这个就是展开后的视图,包括了根据 人物类型来选择角色的一组按钮,和一个同样的ScrollRect来展示人物选择。由于和上面的Panel的创建没有 太大差别,所以直接看结构:

SelectedPanel:

这个就是右边的选定窗口,选择好了任务后会自动展示在上面,由于这方面的代码还没有设计,所以这里只给出UI的结构:

SelectModelPanel:

 这个就是用来展示选定人物模型的一个面板,而这个人物展示 模型的代码我以前博客里面有现成的,所以就不再赘述了:

 最后给个整体Canvas的布局:

UI界面搭建完了,现在就来讲解 一下中介者模式。

笔者还是简单的提一下自己的理解,具体的就要请各位自己看代码了,我个人理解的中介者模式就相当于物流中心的集中点,每一家物流公司都有一些个集货点,每个地方的邮件都先寄往集货点,再有集货点发往目标地点或者再转送到另外的集货点,这也就是中介者模式的范列,而快递行业也证实了这种模式的高效性。

那说白了中介者就相当于一个接线员,当有人想与另外的人发消息时,它并不需要知道对方的具体信息,只需要发给接线员,告诉他我要给谁发什么信息,就可以等着接线员帮自己传讯了。

如果不好理解,不用怀疑这个很难,是我语文水平不够。。。程序员还是通过代码来互相理解吧。

这里我为了避免每一个UI在消息传递时依赖与其他的类(就是有其他的类是自己类的成员),所以选择了创建一个集中处理消息的类UIMsgAgent来管理这些消息的交互。

代码:

就比如说我当前的界面,SelectPlayerPanel和UnfoSelectPanel是需要相互切换的,如果我直接写在两个类里面,会导致我修改一个类,另一个类也可能会受到影响(耦合度高),而放在这个类里面的时候我就只需要在两个Panel需要互相切换的时候调用这个方法就行了,两个类之间并没有直接相关联。如果我以后还想添加一些Panel来切换,就只需要新建Panel类,添加Case,修改 调用条件就行了(这里的switch Case应该有更好的方法来避免,笔者暂时没有学习到,所以后面再做更改)

给下那两个Panel的代码:

接下来是旋转物体的效果怎么做:应为我们展示这个模型是放在一张图片上面来展示的,所以我们要在这个图片上面进行滑动来处理游戏物体的转动,所以要创建两个脚本,一个挂在ShowCase上面,用来控制旋转,另一个挂在Image上面,用来控制滑动手势信息,然后通过UIMsgAgent来对这两个脚本进行通讯。

ShowcaseRotate:

ShowcaseRotateController:

Ok,这就是本文实现的全部效果了。

人物选定效果:https://blog.csdn.net/qq_37421018/article/details/83869512

滚动框效果:https://blog.csdn.net/qq_37421018/article/details/83377504

UI框架下载地址:https://download.csdn.net/download/qq_37421018/10735638

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值