代码:
using UnityEngine; using System.Collections; using System.Collections.Generic; public class ObjectsInfo : MonoBehaviour { public static ObjectsInfo _instance; public TextAsset objectsInfoListText; private Dictionary<int,ObjectInfo> objectInfoDict=new Dictionary<int, ObjectInfo>();//定义一个字典 void Awake() { _instance=this; ReadInfo(); print(objectInfoDict.Keys.Count);//打印出来看看读取到了没 } //拿到字典里面的数据 public ObjectInfo GetObjectInfoByID(int id) { ObjectInfo info=null; objectInfoDict.TryGetValue(id,out info); return info; } //解析Txt文本文件 void ReadInfo() { string text=objectsInfoListText.text;//取到文本里面所有的字符串 string[] strArray = text.Split('\n');//用换行来取 foreach(string str in strArray)//遍力数组 { string[] proArray=str.Split(',');//根据,号来拆分文本里面的数据 ObjectInfo info=new ObjectInfo();//用来存取在文本文件里面得到的这些信息 int id=int.Parse(proArray[0]);//int.parse意思是把String 强制转换成int string name=proArray[1];//名称 string icon_name=proArray[2];//存在图集里面的名称 string str_type=proArray[3];//商品类型 ObjectType type=ObjectType.Drug; switch(str_type) { case "Drug": type=ObjectType.Drug; break; case "Equip": type=ObjectType.Equip; break; case "Mat": type=ObjectType.Mat; break; } //得到信息 info.id=id; info.name=name; info.icon_name=icon_name; info.type=type; if(type==ObjectType.Drug) { int hp=int.Parse(proArray[4]);//血 int mp=int.Parse(proArray[5]);//蓝 int price_buy=int.Parse(proArray[6]);//购买价格 int price_sell=int.Parse(proArray[7]);//出售价格 //得到信息 info.hp=hp; info.mp=mp; info.price_buy=price_buy; info.price_sell=price_sell; } objectInfoDict.Add(id,info);//添加到字典中 ID为Key,可以根据ID来找到这个物体的信息 } } /* 0 1 2 3 4 5 6 7 8 9 10 id 名称 icon名称 类型(药品Drug) 加血量值 加魔法值 出售价 购买价 id 名称 icon名称 类型(装备Equip) 加伤害值 加防御值 加速度值 穿戴类型 适用类型 出售价 购买价 id 名称 icon名称 类型(材料Mat) 出售价 购买价 */ //类型 public enum ObjectType { Drug, Equip, Mat } public class ObjectInfo { public int id; public string name;//名字 public string icon_name;//存取在图集中的名称 public ObjectType type;//类型 public int hp;//血 public int mp;//蓝 public int price_sell;//出售价 public int price_buy;//购买价 } }
注意:我们需要把我们的txt文件放到我们的工程里面 txt里面主要放的是物品栏里面的东西。(商店)加一点注意Mac下txt文件的写入需要换格式
