分成线然后变成变量

时间:2015-03-31 21:57:03

标签: c# for-loop unity3d split

我在下面有这个文本文件:

  

001 Bulbasaur 45 49 49 65 65 45 Grass Poison
  002 Ivysaur 60 62 63 80 80 60 Grass Poison
  003 Venusaur 80 82 83 100 100 80 Grass Poison
  004 Charmander 39 52 43 60 50 65火焰
  005 Charmeleon 58 64 58 80 65 80 Fire

我已经写了这段代码,将它分成行然后变成变量,但它拒绝工作,我的道歉,如果我在错误的地方问这个。 (统一C#问题)。

var lines = textFile.text.Split("\n"[0]);
    allMonsters = new Monsters[lines.Length];
    List<string> lineSplit = new List<string>();
    for (int i = 0; i < lines.Length; i++) {
        Debug.Log(lines[i]);

        lineSplit.Clear();
        lineSplit = lines[i].Split(' ').ToList ();

        int ID                  = int.Parse(lineSplit[0]);
        string Name             = lineSplit[1].ToString();
        float HP                = float.Parse(lineSplit[2]);
        float ATK            = float.Parse(lineSplit[3]);
        float DEF            = float.Parse(lineSplit[4]);
        float SPATK             = float.Parse(lineSplit[5]);
        float SpDEF             = float.Parse(lineSplit[6]);
        float speed             = float.Parse(lineSplit[7]);
        FirstType Ft        =   (FirstType)System.Enum.Parse(typeof(FirstType),lineSplit[8]);
        SecondType ST    =          (SecondType)System.Enum.Parse(typeof(SecondType),lineSplit[9]);    }

代码适用于第一行,但是在第二次运行此代码时,我得到一个对象错误的空引用,请帮助我。

请注意,变量已分配给代码后不会被覆盖。

编辑:LineSplit变量超过1200个元素长,所以我不认为统一正在清理数组这可能是问题吗?

2 个答案:

答案 0 :(得分:2)

我不确定第二次迭代,但是在第4次迭代行004 Charmander 39 52 43 60 50 65 Fire只有9个参数(通过空格分割)而你使用lineSplit[9],所以你会得到{{ 1}}。

答案 1 :(得分:0)

使用文本文件时,换行符通常伴随回车。 尝试

var lines = textFile.text.Split(new string[]{"\r\n"}, System.StringSplitOptions.None);

在第一行。