【游戏客户端】5分钟看懂商店&拍卖系统

    大家好,我是Lampard~~

    最近刚研究完图的最短路径算法【20分钟回顾四大寻路算法】,现在终于有空腾出时间写一篇游戏系统的分享了。

    之前的博客中,我和大家分享了如何做:

  • 商业化的充值活动 :【商业化充值活动博客】
  • 抽卡系统:【抽奖,抽卡系统博客】
  • 装备系统:【装备系统博客】
  • 红点系统:【红点系统博客】

  今天要给大家分享如何完成一个商店&&拍卖行系统(纯流程思路,无代码)。

   【dnf冒险团商店】

   

  【dnf拍卖行系统】

  

看到这些图片有没有换起一些童年回忆,想当年我还在玩DNF早期版本的时候,频道6线是交易区,我乐此不疲的在6线里面倒买倒卖。后来拍卖行出现,方便的交易模式让6线变得名存实亡,从直接的人人交易到变成了人-拍卖行-人的交易。今天我们就剖析一下如何做好一个商店和拍卖行。

(1)巧用Toggle组件创建页签

对于一个商店或者拍卖行来说,肯定有不同类别的商品。那么不同类别的商品,就需要在不同的页签中显示,我们如何实现不同的页签呢?此时我们可以用到一个控件toggle。对于Toggle组件不熟悉的同学可以看看这篇博客【Toggle组件】(稍微看原理即可,不需要研读代码,太老了)。简单来说,其实就是封装了一个类,这个类管理着手底下的几个按钮。我们只需要给每个按钮声明不同的点击回调,那么点击某一个按钮之后,toggle就会帮我们把这个按钮置位选中状态的同时,把其他按钮置为未选中状态,并且响应我们给按钮定义的回调函数,显示我们想要显示的内容并且把其余页签的内容给隐藏。其实听到这个原理之后,我们也可以自己实现,无非就是监听点了哪个按钮,然后遍历所有按钮更新状态,调用回调事件而已。

小优化:像上图拍卖行中,我们的页签栏有那么多页签,我们难道就需要在UI编辑器中预先生成这些控件吗?这样子其实也可以,而且代码中也方便调用。但是如果页签太多,首先就是加一个,减一个不好管理,其次是我们的json文件会体积会变大,最最最重要的一点是,如果策划突发奇想,让你把某些顺序打乱,但是到达了某个时机的时候又变回正常,那就十分不好改了(我曾经就接到过这个需求,某个系统没开的时候其商品页签先不显示,然后解锁系统后又显示回来)。那么该如何做呢?其实我们只需要生成一个按钮,然后把页签的信息配表(图标啊,文本啊等等),然后点击界面时候,根据读表的信息,clone()按钮然后更新信息,更新显示位置即可。所以如果页签比较少,而且没有特殊需求,我们可以直接在UI编辑器生成所有的页签,但是如果需求多变,那么克隆按钮是更好的。

(2)根据不同页签,获取不同的商品数据

之前介绍商业化的时候讲过,生成商品的过程无非是:

1.读取服务端下发的数据

2.定义一个商品类(定义商品图标啊,商品名字啊,购买按钮啊等等)

3.for循环遍历这些数据,然后生成一个个商品类

4.把这些商品类,addChild到listview(或者scrollView)中让它们可以滑动即可。

既然我们的商品有不同的分类,那么我们点击不同按钮的时候,获取不同分类的商品数据即可。至此我们显示的功能就七七八八了,紧接着就是完善逻辑功能,对于商店,拍卖行(一口价)来说,逻辑功能无非就是购买,然后进行界面刷新。这一点我们只需要给购买按钮声明回调事件,点击时往服务端上行协议。当服务端回购买成功协议的时候,抛出事件,然后观利用察者模式,在事件分发的时候刷新界面即可。

小优化:此时又涉及一个小优化,刚才我们说,根据页签分类获取数据然后遍历生成商品类。但是有没有考虑过,如果有很多商品怎么办呢?如果是系统商店还好,数量有限顶多几十个。拍卖行可不行,玩家成千上万。此时就设计我们异步加载的逻辑了【异步加载】大家可以看看我之前写的异步加载博客。一定要异步加载不要一次加载噢,不然那酸爽......

(3)拍卖行的竞拍 or 寄拍功能

前面已经把商店所有的功能以及拍卖行一口价的功能都介绍了,那么相比于商店,拍卖行多了的是寄拍功能。至于这个功能其实也很简单,我们若要竞拍或者寄售一件物品,我们首先要发协议,让服务端扣除这个物品(商品或者竞拍道具),以免我这一刻想要买,结果拍到又不够钱,乱出价。或者刚寄卖,回头又将它分解。然后等时间到了之后(或者被其他玩家秒了之后),服务端同步协议信息,告知结果,若成功则邮件寄发想要的物品,否则则返回原物品即可。

小优化:对于竞拍或者寄售的物品,会存在许多个时间,我们不可能指望服务端每次打开界面同步一次时间,那么要解决时间记录问题,我们可以在刚开始获得服务端数据的时候,记录那个剩余时间数值以及当时的时间戳,然后每次打开界面的时候使用剩余时间 - 现在的时间戳 - 当时的时间戳得到正确显示的数字。至于在打开界面的时候数字的刷新也很简单,就是用一个全局计时器每秒抛出一个second事件,然后我们监听去更新即可。

好的,今天的分享就到这里,谢谢大家~

【游戏客户端】5分钟看懂商店拍卖系统相关推荐

  1. 10分钟看懂Docker和K8S,docker k8s 区别(生动形象,清晰易懂)

    本文来源:鲜枣课堂 原创时间:2018年12月25日 查看docker和k8s的资料看到这篇文章,感觉讲的很好容易理解,整理到自己这里,当作记录,方便查阅 2010年,几个搞IT的年轻人,在美国旧金山 ...

  2. 量子计算机 漫画,漫画 | 10分钟看懂量子比特、量子计算和量子算法

    原标题:漫画 | 10分钟看懂量子比特.量子计算和量子算法 请做好准备,即将进入烧脑模式! 宏观世界的生活经验很多都是表象.比如,你可能认为世界的运行是确定的.可预测的:一个物体不可能同时处于两个相互 ...

  3. java和python的web自动化有什么区别-三分钟看懂Python和Java的区别

    随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...

  4. python和java一样吗-三分钟看懂Python和Java的区别

    随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...

  5. 图像拾取点_10分钟看懂Photoshop 照片修饰(用“消失点”滤镜编辑照片)

    "消失点"滤镜具有特殊的功能,它可以在包含透视平面(如建筑物侧面或热和矩形对象)的图像中进行透视校正.在应用诸如绘画.仿制.拷贝或粘贴,以及变换等编辑操作时,Photoshop可以 ...

  6. 怎么看到方法内引用方法的注释_网页内文字无法复制怎么办?一分钟看懂这些方法,让你随意复制...

    网页内文字无法复制怎么办?一分钟看懂这些方法,让你随意复制 现在的生活中,无论你是一名上班族还是学生或者什么职业,遇到不会的问题,总是需要上网查资料,找到某些好用的资料,却因为某些原因需要付费才能复制 ...

  7. 三相逆变器双pi控制器参数如何调节_一分钟看懂维也纳三相整流器

    欢迎加入技术交流QQ群(2000人):电力电子技术与新能源 1105621549 高可靠新能源行业顶尖自媒体 在这里有电力电子.新能源干货.行业发展趋势分析.最新产品介绍.众多技术达人与您分享经验,欢 ...

  8. 一分钟看懂mysql_冬天发财树“最怕”它,遇上就烂根,一分钟看懂就能养好

    冬天发财树"最怕"它,遇上就烂根,一分钟看懂就能养好 在平时养殖一些花花草草的时候,经常会遇到植物烂根黄叶的情况,有些花友把花卉盆栽买回家没有多久,植株已经出现了烂根.黄叶,最后剩 ...

  9. python和java的区别-三分钟看懂Python和Java的区别

    随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...

最新文章

  1. 董明珠:别嫌工资少,满足这些条件!多高都给你
  2. UITableView 学习笔记
  3. 分享web前端七款HTML5 Loading动画特效集锦
  4. 模式识别中的特征提取及其内在意义
  5. linux 截图程序源码,Linux下C语言实现C/S模式编程(附源码,运行截图)
  6. FPGA开源IP核下载opencores.org
  7. 软件体系结构期末复习题
  8. 电脑壁纸桌面放计算机,电脑壁纸
  9. CANoe CAPL文件操作目录合集
  10. 如何管理好一个研发管理团队
  11. Learning RoI Transformer for Detecting Oriented Objects in Aerial Images
  12. 掌门教育秉持因材施教原则,打造个性化教学模式
  13. 免费AI改图神器,一个万能宝藏在线工具箱
  14. 服务器Networking Latency测试
  15. 技术分享 | 无人驾驶汽车的眼睛
  16. 培养好习惯是很难,但也有好方法
  17. 数据仓库-信贷管理系统
  18. Linux 系统的使用
  19. docusign文档打不开_DocuSign – 适用于 Gmail 的电子签名_v4.4.0
  20. 监控视频分发转发服务器性能,基于视频监控的分发服务器的研究与实现

热门文章

  1. linux服务器设置永久代理
  2. 15.什么是双亲委派模型?
  3. juniper 开放端口_juniper如何查看端口流量
  4. skynet服务的缺陷 lua死循环
  5. 编辑有签名的pdf文档Acrobat Pro DC
  6. 漫画:什么是 “千年虫” 问题?
  7. 关于亚马逊运营中能够及时发现问题的几点建议值得你收藏!
  8. 2016-0616 JAVA实现的一个日历
  9. linux系统安装腾达U1无线网卡驱动
  10. 使用谷歌浏览器看b站有的视频会出现花屏是如何解决的