• Item(类) 物品的父类
包含一些公有属性(Id\Name\Type…)
publicvirtualstring GetToolTipText() return Description; } //获取属性介绍的公有方法
  • Goods(类)  一些你需要的物品类 继承item的一些公有方法,并且增加私有方法
比如:
Weapon : Item //武器
//构造方法(自身属性+私有属性)继承(父类属性)
public Weapon(int id, string name, ItemType itemType, ItemQuality quality, string description, int capacity, int buyPrice, int sellPrice,string sprite,
int Damage,WeaponType wpType) : base(id, name, itemType, quality, description, capacity, buyPrice, sellPrice, sprite) { }
Material : Item //材料
Equipment : Item //配件
Consumable : Item //消耗品
  • Slot(类)  格子
StoreItem() //设置自身格子item
GetItemType() //获取自身格子item的类型
GetItemID() //获取自身格子item的ID
IsFilled() 检//查自身格子item的容量是否已满
OnPointerExit(PointerEventData eventData)  //用于检测鼠标是否离开这个格子
OnPointerEnter(PointerEventData eventData) //用于检测鼠标进入这个格子  来显示toolTipText
  • InventoryManager(类) 解析json里面的items,并且保存list
Update() //Tip跟随鼠标方法

            //控制提示面板跟随鼠标
            Vector2 position;
            RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform,
                Input.mousePosition, null, out position);
            toolTip.SetLocalPosition(position + toolTipPositionOffset);
Item GetItemById(int id) //获取item的方法
ShowToolTip(string content) //显示ToolTip
HideToolTip() //关闭ToolTip
  • ToolTip(类) 提示面板
CanvasGroup canvasGroup; 控制canvasGroup的alpha达到显示隐藏效果
Show() alpha = 1;
Hide() alpha = 0;
SetLocalPosition(Vector3 position) //设置坐标位置
  • Inventory(类) 仓库
public bool StoreItem(int id) //储存
{
    Item item = InventoryManager.Instance.GetItemById(id);
    return StoreItem(item);
}
bool StoreItem(Item item) //设置
{
  //判断物品的所占容量 等于1格的时候只需要增加一个格子存放
  //如果物品的容量 > 1的时候需要判断当前是否有相同ID物品的格子
  //没有相同物品的格子的话,新增一个存放
  //找到相同物品的格子的话,判断是否有空格子存放,有位置的话存放,没有位置的话表明背包已满
}
Slot FindEmptySlot() //找到一个空的格子
//遍历背包格子
//背包有物品的 false else true
Slot FindSameIDSlot(Item item) //找相同类型的格子
//遍历背包格子
//判断这个格子必须存放了物品&&并且格子物品的ID等于新增的物品的ID&&判断当前这个格子是否已满
  • Knapsack(类) 背包:仓库

//通过Knapsack设置背包/箱子/商店/…等等!

 
外部 – 存放物品
Knapsack.Instance.StoreItem(id); //通过id增加物品
PS:转换json 到type类型
 Item.ItemQuality quality = (Item.ItemQuality)System.Enum.Parse(typeof(Item.ItemQuality), jsonData[i][“quality”].ToString());
//通过私有的type类型,去指定对应的私有属性
            Item item = null;
            switch (type)
            {
                case Item.ItemType.Consumable:
                    int hp = int.Parse(jsonData[i][“hp”].ToString());
                    int mp = int.Parse(jsonData[i][“mp”].ToString());
                    item = new Consumable(id, name, type, quality, description, capacity, buyPrice, sellPrice, hp, mp, sprite);
                    break;
                case Item.ItemType.Equipment:
                    //TODO
                    break;
                case Item.ItemType.Weapon:
                    //TODO
                    break;
                case Item.ItemType.Material:
                    //TODO
                    break;
                default:
                    break;
            }