【发布时间】:2015-03-31 21:57:02
【问题描述】:
我在下面有这个文本文件:
001 大头龙 45 49 49 65 65 45 草毒
002 常春藤 60 62 63 80 80 60 草毒
003 金星 80 82 83 100 100 80 草毒
004 Charmander 39 52 43 60 50 65 火
005变色龙58 64 58 80 65 80火
我已经编写了这段代码,将其分成几行,然后分成变量,但它拒绝工作,如果我在错误的地方问这个问题,我深表歉意。 (统一 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 个,所以我认为 unity 没有正确清除数组,这可能是问题吗?
【问题讨论】:
-
你确定它正确分割了行吗?我将首先注销它每次尝试解析的行,以便您可以直接查看它正在处理的内容。我猜此时它会将整个文件作为单行摄取。当您说它适用于第一行但不适用于后续行时,这就是我想到的。如果您在调试日志中获得有关如何解析行的更多信息,这可以帮助我们找出问题所在。
-
您确定这些行以
\n结尾吗?它还可能包含\r,这样在解析时会干扰结果的完整性。 (我花了很长时间才意识到这是我的一个代码中的错误)。我不知道 C#,但如果它受支持,请尝试使用正则表达式 ("$"=end of line) 拆分或将所有 "\r" 替换为空。 -
@Raymond Tunstill 你能检查一下女巫迭代和你得到异常的行吗?
-
经过检查,行拆分的计数为 1274,而它应该有的最大计数为 10,但我不确定为什么。
-
@RoyShmuli 在第一个 for 循环的第一次迭代之后