I am trying to save data for my app I am using this code:
BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Create(Application.persistentDataPath + "/inventorySave.gd");
bf.Serialize(file, toSave);
file.Close();
I also tried this code:
StreamWriter sw = new StreamWriter(Application.persistentDataPath + "/inventorySave.txt");
sw.WriteLine(toSave);
print("wrote line" + toSave);
sw.Flush();
sw.Close();
But none of them seem to work (my unity crashes and I don’t get any errors in console). Saving is called inside a for loop, and I am trying to save string with less then 8 characters the code can be found here.
This is what I have found somewhere in your code:
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++;
In every iteration, this is what happens to variable i
:
int i = 0; // in start of for loop i is "0".
switch (int.Parse(numbers[i--].ToString())) // i = -1 here
finalString[i--] = "a".ToString(); break; // in any of case statement, i = -2
i++; // i = -1 here
i++; // i = 0 here
Hence : value of i
will always be 0
and will never be greater than numbers.Length
so loop will not terminate.
Hence : infinite loop -> Unity Crashes