1. 程式人生 > >Unity跨平臺讀取檔案(txt,csv,xml等)

Unity跨平臺讀取檔案(txt,csv,xml等)

using UnityEngine;
using System.Collections;
using System.Collections.Generic;


public class ConfigManager
{
    //宣告一個字典key為int型別,value為Objectinfo型別(Objectinfo為一個類)
    public Dictionary<int, ObjectInfo> objectsInfoDict = new Dictionary<int, ObjectInfo>();
    //預設建構函式
    public ConfigManager()
    {
        initObjectInfoList("ObjectsInfoList");//形參是檔案的名字作為路徑載入
    }
    //讀取檔案並儲存在字典中
    void initObjectInfoList(string path)
    {
        string[][] strings = ReadFile.GetCSVStrings(path);
        //如果有標題的話i=1,沒有為0
        for (int i = 0; i < strings.GetUpperBound(0) + 1; i++)
        {
            ObjectInfo info = new ObjectInfo();
            info.id = int.Parse(strings[i][0]);
            info.name = strings[i][1];
            info.icon_name = strings[i][2];
            string str_type = (strings[i][3]);
            ObjectType type = new ObjectType();
            switch(str_type)
            {
                case "Drug":
                    type = ObjectType.Drug;
                    break;
                case "Equip":
                    type = ObjectType.Equip;
                    break;
                case "Mat":
                    type = ObjectType.Mat;
                    break;
            }
            if(type==ObjectType.Drug)
            {
                info.hp =int.Parse(strings[i][4]);
                info.mp = int.Parse(strings[i][5]);
                info.price_sell = int.Parse(strings[i][6]);
                info.price_buy = int.Parse(strings[i][7]);
            }
            objectsInfoDict.Add(info.id,info);
            Debug.Log(objectsInfoDict.Keys.Count);
        }
    }
}
//物品的型別
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;