2016-08-17 2 views
1

Я пытаюсь сохранить данные для моего приложения я использую этот код:файл стример врезается единство

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();  

Но никто из них не похоже на работу (мое единство падает, и я не получаю никаких ошибок в консоли). Сохранение вызвано внутри цикла for, и я пытаюсь сохранить строку с менее чем 8 символами, код может быть найден here.

+0

Вы делаете это внутри примерки поймать блок? Кроме того, вы должны делать StreamWriter внутри используемого блока, тогда нет необходимости явно скрывать/закрывать. – EJoshuaS

+0

да, это внутри try catch, и оно зациклировано 32 раза, может ли цикл заставить его сбой? – Patrik

+0

Это могло .. да. Если ваш компьютер недостаточно быстрый или вы много делаете. 32 раза похоже на много. –

ответ

1

Это то, что я нашел где-то в вашем коде:

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 Сбои

+0

ok, у журнала есть 8753 строки .. что я ищу? – Patrik

+0

Последнее, потому что это скажет вам, почему он разбился. И если было бы более полезно, если бы вы разместили ** фактический ** код вместо всего лишь фрагмента. –

+0

Последние сообщения в журнале отмечены значком «(это сообщение безвредно») и все, что я еще не понимаю – Patrik

Смежные вопросы