文件流媒体崩溃统一

file streamer crashes unity

我正在尝试为我的应用程序保存数据我正在使用此代码:

BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Create(Application.persistentDataPath + "/inventorySave.gd"); 
bf.Serialize(file, toSave);
file.Close();

我也试过这个代码:

StreamWriter sw = new StreamWriter(Application.persistentDataPath + "/inventorySave.txt");
sw.WriteLine(toSave);
print("wrote line" + toSave);
sw.Flush();
sw.Close();    

但其中 none 似乎有效(我的 unity 崩溃了,我在控制台中没有收到任何错误)。保存是在 for 循环内调用的,我正在尝试保存少于 8 个字符的字符串,可以找到代码 here

这是我在您的代码某处找到的内容:

for (int i = 0; i <= numbers.Length ; i++)
            {
                print("inside while class");
                switch (int.Parse(numbers[i--].ToString()))
                {
                    case 0:
                        finalString[i--] = "a".ToString(); break;
                    case 1:
                        finalString[i--] = "b".ToString(); break;
                    case 2:
                        finalString[i--] = "c".ToString(); break;
                    case 3:
                        finalString[0] = "d".ToString(); break;
                    case 4:
                        finalString[i--] = "e".ToString(); break;
                    case 5:
                        finalString[i--] = "f".ToString(); break;
                    case 6:
                        finalString[i--] = "g".ToString(); break;
                    case 7:
                        finalString[i--] = "h".ToString(); break;
                    case 8:
                        finalString[i--] = "i".ToString(); break;
                    case 9:
                        finalString[i--] = "j".ToString(); break;
                }

                i++;

在每次迭代中,这就是变量 i:

发生的情况
  1. int i = 0; // in start of for loop i is "0".

  2. switch (int.Parse(numbers[i--].ToString())) // i = -1 here

  3. finalString[i--] = "a".ToString(); break; // in any of case statement, i = -2

  4. i++; // i = -1 here
  5. i++; // i = 0 here

因此: i 的值将始终为 0,并且永远不会大于 numbers.Length,因此循环不会终止。

因此: 无限循环 -> Unity 崩溃