信息读取-U3D-从外部加载txt文件再用后台的Dictionary来储存

public TextAsset textAsset; 调用text文件 再编辑台赋TXT文件
要看好TXT文件里面的文字有没有在Unity里面加载
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ObjectsInfo : MonoBehaviour {
    public static ObjectsInfo _instance;//可从外部调用
    public TextAsset textAsset;    //TXT的赋值
    
    private Dictionary ObjectInfoDict=new Dictionary();//系统后台存储方法,这里主要
                                                                                         //使用一个int的id带一个类存储
   
    private void Awake()
    {
        _instance = this;
        ReadInfo();
        
        print(ObjectInfoDict.Keys.Count);//检查一共存储了多少个类

    }

    public ObjectInfo ReadObjectInfoDictionary (int id){//用id值读取字典里存储的类
        ObjectInfo info = null;
        ObjectInfoDict.TryGetValue(id,out info);
        return info;

    }

    public void ReadInfo()//把TXT文本里的文字转换到字典里
    {
        string text = textAsset.text;//把所有TXT文本读取出来
        string[] textArray = text.Split('\n');//把文本以“\n”来分隔来,分别用字符串数组装
        foreach(string str in textArray)//遍历数组
        {
            string[] proArray = str.Split(',');//在这一条数组里用“,”来分割字符串,再使用字符串数组装
            ObjectInfo info = new ObjectInfo();//new一个下面定义的类型,用来当Dictionary的类型
            info.id = int.Parse(proArray[0]);//赋值类里面的id
            info.name = proArray[1];  //赋值类里的内容
            info.icon_name = proArray[2];
            string str_type = proArray[3];
            info.type = ObjectType.Drug;//如果类里有枚举类型可先在上面定义个string赋值后,判断文本里面的内容
            switch (str_type)
            {
                case "Drug":
                    info.type = ObjectType.Drug;//判断完再赋值
                    break;
                case "Equip":
                    info.type = ObjectType.Equip;
                    break;
                case "Mat":
                    info.type = ObjectType.Mat;
                    break;
            }
            if (info.type ==ObjectType.Drug)//这是某一种情况的赋值
            {
                info.hp = int.Parse(proArray[4]);
                info.mp = int.Parse(proArray[5]);
                info.price_sell = int.Parse(proArray[6]);
                info.price_buy = int.Parse(proArray[7]);
            }
            ObjectInfoDict.Add(info.id, info);//字典赋值

        }
    }


    
}
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;


    
    }

你可能感兴趣的:(U3D)