Проблемы с переменной, определенной в цикле for C#

#c# #arrays #loops #for-loop

#c# #массивы #циклы #цикл for

Вопрос:

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

Вот код:

 for (i = 0; i < buttons.Length; i = i   1) {

    if (PlayerPrefs.GetInt("button"   string.Format i) == null) {

        PlayerPrefs.SetInt("button"   string.Format i, 1);
    }

    if (PlayerPrefs.GetInt("button"   string.Format i) == 1) {

        button.interactable = true;

    } else {

        button.interactable = false;

    }
}
  

В настоящее время unity отображает 5 ошибок:

  • ошибка CS1525: неожиданный символ `i’ (2 из них)
  • ошибка CS1519: неожиданный символ `else’ в объявлении класса, структуры или элемента интерфейса
  • ошибка CS1519: неожиданный символ `=’ в объявлении класса, структуры или элемента интерфейса
  • ошибка CS8025: ошибка синтаксического анализа

Комментарии:

1. i = 0; строка должна быть int i = 0; вот что вызывает ошибку символа.

2. Крошечное улучшение: измените «i = i 1» на «i «.

Ответ №1:

Просто предположение, но вы должны написать:

 for (int i = 0; i < buttons.Length;   i) {
  

Возможно, вы забыли объявить i

Также эта строка:

 PlayerPrefs.GetInt("button"   string.Format i)
  

строка.Форматирование — это статический метод string . Синтаксис неправильный. Вы можете записать это следующим образом:

 PlayerPrefs.GetInt("button"   i)
  

Или таким образом:

 PlayerPrefs.GetInt(string.Format("button{0}",i));
  

Комментарии:

1. Спасибо, это решило мою проблему: D Извините, я новичок в C #, поэтому я еще не знаю весь синтаксис для строк и т.д.

2. Конечно! 🙂 Я рад, что смог помочь!

3. Ах, и если это помогло вам, пожалуйста, отметьте этот пост как ответ 🙂 Щелчок по флажку

4. i должно быть i

5. в цикле for это не имеет значения, поскольку приращение является единственной операционной инструкцией. имеет смысл использовать ее как: var value = i;