Unity3D系统实现背包里物品的各类功能

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

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

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


还有最重要的UML类图,看懂这个基本就大概地搞定这个所谓的装备系统了: 
这里写图片描述
spa

这里先让你们理解个大概思路,从全局掌握开始:先看UML图的左边,左边并无涉及到U3d里UI的各类变换逻辑,只是用来单纯的处理物品数据的存储和获取之类的。每一个装备物品Item都有本身的属性(id,name什么的),而后物品类左边的是两个枚举,用来补充物品的类型和品质。接着,由物品类根据物品类型枚举衍生出具备特殊功能的四个子类:消耗品(如血瓶啊,蓝瓶等),装备类(主要是玩家装扮用),武器就不说了,材料类(用来锻造更好的物品)。补充:装备类也有不一样的类型,就比如上衣只能穿在上身,裤子只能在下身,因此也用一个枚举来加以区分。武器也一样分为主手武器(通常是右手拿着)和副手武器(左手)。 .net


接下来,看UNL图的右边部分:右边就是用来处理涉及到U3d里UI的各类变换逻辑了。首先,每个物品的各类属性信息都放在一个Json里(若是不懂Json本身谷歌或百度哈,这里再也不赘述!),由物品管理器负责解析,固然物品管理器也负责一些提示框(ToolTip)(也就是上面介绍的五光十色字体的那个黑块)面板的显示和隐藏。Inventory(存货)类,是每一个装备面板的基类,为何这样设计呢,由于下面的每个功能面板(子类),都有不少相同的方法,因此在基类Inventory中就先写好,这样就算子类增长功能重写父类方法也彻底能够。inventory下面的每个子类上面图中都已经介绍过,再也不赘述。Slot物品槽类,对应图中存放每一个物品的地方,主要用来实现存储物品功能,注意,它也是一个基类,由于每个面板的物品槽的功能会有差别(后续介绍)。ItemUI类,见名之意,是物品在UI中的实际体现,只有两个属性,物品和物品的数量,如上面图中的物品显示UI。 设计


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------3d