前言
本文由作者@zx一路飞奔出品,转载请注明出处
文章地址:http://blog.youkuaiyun.com/u014735301/article/details/43307651
作者微博:http://weibo.com/u/1847349851
总结下自己想的背包系统的实现。先上图看看效果
背包系统
首先需要一个管理背包的类,其中我将包裹中的物品,和左边装备栏的装备,区分开来!
上代码
.
/*
人物背包类
*/
public class BagData : MonoBehaviour {
//物品
[System.Serializable]
public class Bag
{
public ItemData.Item item; //物品
public int count; //物品数量
}
//人物装备
[System.Serializable]
public class Equip
{
public ItemData.Item equip;
public bool equipOn;
}
public List<Bag> bag = new List<Bag>(); //背包;
public Equip wuqi; //武器
public Equip maozi ;
public Equip yifu ;
public Equip xiezi ;
public Equip xianglian;
public Equip jiezhi ;
public int goldCount;
public static BagData instance;//单例
void Awake () {
instance = this;
}
void Update() {
for (int i = 0; i < bag.Count; i++)
{
if (bag[i].count == 0)
{
bag.Remove(bag[i]);
}
}
}
再看看 item类(物品类)
//物品类型
public enum ItemType{
//金币,装备,材料,消耗品,任务用品
gold, equipment, material, drug, task
}
//装备类型
public enum EquipmentType{
//武器,衣服,帽子,鞋子,项链,戒指
wuqi,yifu,maozi,xiezi,xianglian,jiezhi
}
//物品
[System.Serializable]
public class Item {
public string name = "name";//名称
public string id = "id"; //id
public ItemType itemType; //物品类型
[Multiline]
public string description = "Description Here";//描述
public Texture2D img; //图片
public float range; //爆率
public int count; //数量
public EquipmentType equipmentType;//装备类型
public int price; //价格(卖商店能卖几个钱)
//对属性的作用
public int hp, mp, atk, def;
public float criPercent, atkSpd, moveSpd;
}
基本类搞定了, 剩下的就是UI逻辑的问题,无非是item,传来传去,传参数,就需要在物品栏格子,物品显示面板,装备格子上,挂上脚本,
写入item参数。保证能获取item ,同时将背包 做成单例模式,这样对其操作更加方便!
写一个 UIController.cs 控制整个UI逻辑。