static void ReadConfigData <T>() where T : GameConfigDataBase
    {
        T      obj      = Activator.CreateInstance <T>();
        string fileName = obj.getFilePath();

        string getString = Resources.Load <TextAsset>("GameConfig/" + fileName).text;

        CsvReaderByString csr = new CsvReaderByString(getString);

        Dictionary <string, GameConfigDataBase> objDic = new Dictionary <string, GameConfigDataBase>();

        FieldInfo[] fis = new FieldInfo[csr.ColCount];
        for (int colNum = 1; colNum < csr.ColCount + 1; colNum++)
        {
            fis[colNum - 1] = typeof(T).GetField(csr[1, colNum]);
        }

        for (int rowNum = 3; rowNum < csr.RowCount + 1; rowNum++)
        {
            T configObj = Activator.CreateInstance <T>();
            for (int i = 0; i < fis.Length; i++)
            {
                string fieldValue = csr[rowNum, i + 1];
                object setValue   = new object();
                switch (fis[i].FieldType.ToString())
                {
                case "System.Int32":
                    setValue = int.Parse(fieldValue);
                    break;

                case "System.Int64":
                    setValue = long.Parse(fieldValue);
                    break;

                case "System.String":
                    setValue = fieldValue;
                    break;

                default:
                    Debug.Log("error data type");
                    break;
                }
                fis[i].SetValue(configObj, setValue);
                if (fis[i].Name == "key" || fis[i].Name == "id")
                {
                    //只检测key和id的值,然后添加到objDic 中
                    objDic.Add(setValue.ToString(), configObj);
                }
            }
        }
        dataDic.Add(typeof(T), objDic);            //可以作为参数
    }
Exemplo n.º 2
0
    static void ReadConfigData <T>() where T : GameConfigDataBase
    {
        T                 obj       = Activator.CreateInstance <T> ();
        string            fileName  = obj.getFilePath();
        string            getString = GameResourcesManager.GetGameConfigText(fileName);
        CsvReaderByString csr       = new CsvReaderByString(getString);
        Dictionary <string, GameConfigDataBase> objDic = new Dictionary <string, GameConfigDataBase>();

        FieldInfo[] _fileInfos = new FieldInfo[csr.ColCount];
        for (int i = 1; i < csr.ColCount + 1; i++)
        {
            _fileInfos[i - 1] = typeof(T).GetField(csr[1, i]);
        }
        for (int rowNum = 3; rowNum < csr.RowCount + 1; rowNum++)
        {
            T configObj = Activator.CreateInstance <T>();
            for (int colNum = 0; colNum < _fileInfos.Length; colNum++)
            {
                string fieldValue = csr [rowNum, colNum + 1];
                object setvalue   = new object();
                switch (_fileInfos[colNum].FieldType.ToString())
                {
                case "System.Int32":
                    setvalue = int.Parse(fieldValue);
                    break;

                case "System.Int64":
                    setvalue = long.Parse(fieldValue);
                    break;

                case "System.String":
                    setvalue = fieldValue;
                    break;

                case "System.Single":
                    setvalue = float.Parse(fieldValue);
                    break;

                default:
                    Debug.Log("error data type");
                    break;
                }
                _fileInfos[colNum].SetValue(configObj, setvalue);
                if (_fileInfos[colNum].Name == "key" || _fileInfos[colNum].Name == "id")
                {
                    objDic.Add(setvalue.ToString(), configObj);
                }
            }
        }
        dataDic.Add(typeof(T), objDic);
    }