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文件的写入需要换格式
代码:
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文件并且用字典来使用txt里面的信息
- 利用python读取xml布局文件下面使用中文或者引用资源文件里面的中文,并且显示行号
- java读取txt文件,使用正则表达式获取信息
- 用Unity的TextAsset读取TXT文档内容,将物品信息存入字典中
- 3:(C#下使用GDAL库)打开影像文件并读取基本信息
- 使用Robot从txt文件中读取不同行的内容并显示(续)
- 使用 Unity(二):配置 Unity 、读取配置信息和获取对象
- fstream IO流类的使用:C++读取文件txt,循环逐行输出(转)
- 如何在spring中读取properties配置文件里面的信息
- Linux 使用statvfs读取文件系统信息
- 使用java读取txt里边的文件内容并获取大小(M).txt
- 使用JAVA读取EXCEL文件里面的数据
- 使用JAVA读取EXCEL文件里面的数据
- java读取excel、txt 文件内容,传到、显示到另一个页面的文本框里面。
- C下学生管理系统:从文件中读取30位学生的信息(含邮箱),并实现简单的增、删、查找、统计(邮箱使用人数)。---附程序哦!
- AJAX XML 实例 下面的例子将演示网页如何使用 AJAX 来读取来自 XML 文件的信息:
- 如何从文本(.txt)里面读取配置文件
- IO 读取txt文件问题:正由另一进程使用,因此该进程
- 使用StreamReader 读取txt文本中的信息
- java 读取资源文件并且动态设置资源里面的参数demo