1.创建静态数据类
public class ItemStaticData {
public int ItemID;
public string Name;
public string Description;
public int Price;
public int Color;
public int Type;
public string Icon;
}
2.创建静态数据管理类的单例
/// <summary>
/// 静态数据管理类
/// </summary>
public class ItemStaticDataManager{
private static ItemStaticDataManager instance;
public static ItemStaticDataManager Instance {
get {
if (instance == null) {
instance = new ItemStaticDataManager();
}
return instance;
}
}
3.将静态数据通过Dictionary保存方便外界调用
itemStaticDataDic = new Dictionary<int, ItemStaticData>();
TextAsset ta = Resources.Load<TextAsset>("Json/item");
List<ItemStaticData> list = JsonMapper.ToObject<List<ItemStaticData>>(ta.text);
for (int i = 0; i < list.Count; i++)
{
itemStaticDataDic.Add(list[i].ItemID, list[i]);
}
4.写一个方法供外界通过Id获取相应的数据对象
/// <summary>
/// 根据id获取到整个数据对象
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public ItemStaticData GetDataByID(int id) {
if (itemStaticDataDic.ContainsKey(id))
{
return itemStaticDataDic[id];
}
else {
Debug.LogError("没有这个Item:" + id);
return null;
}
5.写一个方法用于显示装备的详细信息
private ItemServerData mServerData;
/// <summary>
/// 传过来的数据只有服务器数据,没有表数据
/// 但是可以根据服务器数据中的id来获取表数据
/// </summary>
/// <param name="data"></param>
public void Show(ItemServerData data){
mServerData = data;
ItemStaticData itemStaticData = ItemStaticDataManager.Instance.GetDataByID(data.id);
if (itemStaticData == null) {
Debug.LogError("没有数据:" + data.id);
return;
}
string[] icons = itemStaticData.Icon.Split('#');
SpriteAtlas sa = Resources.Load<SpriteAtlas>(icons[0]);
icon.sprite = sa.GetSprite(icons[1]);
countText.text = data.count + "";
}
6.给显示装备的格子组件绑定点击事件:玩家点击时触发显示方法
// <summary>
/// 当前Item被点击时触发的函数
/// </summary>
public void ItemClick() {
BagLeftView.Instance.Show(mServerData);
}