您的位置:首页 > 移动开发 > Unity3D

Unity读取txt文件并且用字典来使用txt里面的信息

2015-01-22 01:41 716 查看
这几天在做一个单机的RPG游戏,以前看到贴吧,论坛有人做一些RPG游戏,感觉好强啊,既然有资源,所以我也打算做一个,就在今天(2015年1月22日,我遇到了一个怎么读取txt文本里面的配置信息的问题,以前没接触过,只在cocos2d里面接触了一点,所以做的时候晕晕的,)
代码:
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文件的写入需要换格式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Unity 读取txt文件