using LitJson;
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
public class InventroyManager : MonoBehaviour
{
#region 单例模式
private static InventroyManager _instance;
public static InventroyManager Instance
{
get
{
if(_instance==null)
{
//下面的代码只会执行一次
_instance=GameObject.Find("InventroyManager").GetComponent<InventroyManager>();
}
return _instance;
}
}
#endregion
private List<Item> itemslist;
private void Start()
{
ParseItemJson();
}
private void ParseItemJson()
{
itemslist = new List<Item>();
//获取Json文件中的内容
TextAsset itemAsset = Resources.Load<TextAsset>("Json/Item");
string itemjson= itemAsset.text;
//转化为JsonData类型呢的数据
//JsonData itemdata = JsonMapper.ToObject(itemjson);
itemslist = JsonMapper.ToObject< List<Item>> (itemjson);
Debug.Log(itemslist[0].ID);
//循环遍历其中JsonData的数据并转化为相应的数据类型
//foreach (JsonData temp in itemdata)
//{
// //获取Item的类型
// string typestr = temp["type"].ToString();
// //通过字符串枚举类型,转化成实际枚举类型
// Item.ItemType type= (Item.ItemType)System.Enum.Parse(typeof(Item.ItemType), typestr);
// //共有属性解析
// int id = (int)temp["id"];
// string name = temp["name"].ToString();
// Item.ItemQuality quality = (Item.ItemQuality)System.Enum.Parse(typeof(Item.ItemQuality), temp["quality"].ToString());
// string description = temp["description"].ToString();
// int capacity = (int)temp["capacity"];
// int buyprice= (int)temp["buyprice"];
// int sellprice = (int)temp["sellprice"];
// string sprite = temp["sprite"].ToString();
// Item item = null;
// switch (type)
// {
// case Item.ItemType.Consumable:
// //解析特有属性
// int hp = (int)temp["hp"];
// int mp = (int)temp["mp"];
// item = new Consumable(id,name,type,quality,description,capacity,buyprice, sellprice, sprite,hp,mp);
// break;
// case Item.ItemType.Equipment:
// break;
// case Item.ItemType.Weapon:
// break;
// case Item.ItemType.Material:
// break;
// }
// //将道具对象存入列表
// itemslist.Add(item);
// Debug.Log(item);
//}
}
}
解析的时候我使用了litjson,为什么JsonMapper.ToObject< List<Item>> (itemjson);解析出的对象没有办法Debug.Log(itemslist[0].ID);打印出属性值。