基于Unity3D(UGUI)的背包系统(装备系统,锻造系统,购买系统)

论坛 期权论坛 脚本     
匿名网站用户   2020-12-19 12:57   5439   0
努力,从点滴做起,从开始就要写好自己的每一篇博客文章。
最近花了一段时间学习了一个关于Unity3D的背包系统,实现了背包里物品的各种功能:给角色装备物品功能,锻造物品功能,从商店购买物品功能,简单的拖拽,交换等功能。这里说的也只是纯粹的使用UI方面的知识,没有游戏方面的元素(嘻嘻,当然背包系统也是属于游戏的一个部分哈)。在这里申明一下,我写的这个文章只是为自己学习这个知识的系统整理,使自己更深入的理解和记忆,同时也方便以后自己查看,当然,好的知识也是需要分享的嘛,欢迎大家互相交流。如果需要原创视频学习的话,请找***老师->_->。

好了,开始进入正题!
先给出部分效果图:
背包是用来存放角色在游戏中获得的物品,箱子是用来临时保存物品的(只有保存功能),角色面板是用来模拟给角色装备物品的,武器,服饰等,最右边红色字体的面板是用来显示当前装备下角色的各个属性总和
背包是用来存放角色在游戏中获得的物品,箱子是用来临时保存物品的(只有保存功能),角色面板是用来模拟给角色装备物品的,武器,服饰等,最右边红色字体的面板是用来显示当前装备下角色的各个属性总和。

商贩面板功能主要是用来给玩家购买物品和卖掉自己物品,另外看到左边黑色的那块(里面的字体五颜六色的),用来显示每个物品的属性。还有右上角的硬币图样用来显示玩家当前拥有的钱币,玩家向商贩买装备时钱币减少,把背包里的装备卖给商贩时钱币增加,只是买卖的价格不同
商贩面板功能主要是用来给玩家购买物品和卖掉自己物品,另外看到左边黑色的那块(里面的字体五颜六色的),用来显示每个物品的属性。还有右上角的硬币图样用来显示玩家当前拥有的钱币,玩家向商贩买装备时钱币减少,把背包里的装备卖给商贩时钱币增加,只是买卖的价格不同。

锻造面板用来给玩家提供锻造功能,玩家可以使用背包里的符合锻造需求的物品锻造更厉害物品
锻造面板用来给玩家提供锻造功能,玩家可以使用背包里的符合锻造需求的物品锻造更厉害物品。具体的锻造需求先不作介绍,后续介绍。


还有最重要的UML类图,看懂这个基本就大概地搞定这个所谓的装备系统了:
这里写图片描述
这里先让大家理解个大概思路,从全局掌握开始:先看UML图的左边,左边并没有涉及到U3d里UI的各种变换逻辑,只是用来单纯的处理物品数据的存储和获取之类的。每个装备物品Item都有自己的属性(id,name什么的),然后物品类左边的是两个枚举,用来补充物品的类型和品质。接着,由物品类根据物品类型枚举衍生出具有特殊功能的四个子类:消耗品(如血瓶啊,蓝瓶等),装备类(主要是玩家装扮用),武器就不说了,材料类(用来锻造更好的物品)。补充:装备类也有不同的类型,就好比上衣只能穿在上身,裤子只能在下身,所以也用一个枚举来加以区分。武器也同样分为主手武器(一般是右手拿着)和副手武器(左手)。
接下来,看UNL图的右边部分:右边就是用来处理涉及到U3d里UI的各种变换逻辑了。首先,每一个物品的各种属性信息都放在一个Json里(如果不懂Json自己谷歌或百度哈,这里不再赘述!),由物品管理器负责解析,当然物品管理器也负责一些提示框(ToolTip)(也就是上面介绍的五颜六色字体的那个黑块)面板的显示和隐藏。Inventory(存货)类,是每个装备面板的基类,为什么这样设计呢,因为下面的每一个功能面板(子类),都有很多相同的方法,所以在基类Inventory中就先写好,这样就算子类增加功能重写父类方法也完全可以。inventory下面的每一个子类上面图中都已经介绍过,不再赘述。Slot物品槽类,对应图中存放每个物品的地方,主要用来实现存储物品功能,注意,它也是一个基类,因为每一个面板的物品槽的功能会有差异(后续介绍)。ItemUI类,见名之意,是物品在UI中的实际体现,只有两个属性,物品和物品的数量,如上面图中的物品显示UI。
总体感觉有些MVC的影子,M:用来存储物品信息的Json文件和UMl图中左边的各种类,V:在Unity中的具体UI显示,C:UML图中右边管理类。 好了,终于把全局大概给总结性地介绍完了,细节后续更新哈。有疑问欢迎交流。:-D

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP