Добрый день друзья. Использую данный метод в своей игре:
public void GenerateLevel()
{
Word = "GALAXY"; Hint = "Hint for answer"; Path = "Sprites/Img1";
ImageWord = Resources.Load<Sprite>(Path);
ImageDefault.sprite = ImageWord;
tempCell = new GameObject[Word.Length];
checkAddDel = new int[Word.Length];
RandomSym = new string[14 - Word.Length];
answerSym = new string[Word.Length];
foreach (char ch in Word.ToUpper().ToCharArray())
{
int rnd = Random.Range(0, AllSymbols.Count);
while (AllSymbols[rnd].GetComponent<Text>().text != "-")
rnd = Random.Range(0, AllSymbols.Count);
AllSymbols[rnd].GetComponent<Text>().text = ch.ToString();
totalSymbol++; // Считаем символы
answerSym[answChar] = AllSymbols[rnd].GetComponent<Text>().text;
answChar++;
}
foreach (GameObject go in AllSymbols) // Заполняем пустые кубики
{
if (go.GetComponent<Text>().text == "-")
{
go.GetComponent<Text>().text = ((char)Random.Range(65, 91)).ToString(); // 65,91 - коды Латинских символов
RandomSym[randChar] = go.GetComponent<Text>().text;
randChar++;
}
}
foreach (char ch in Word.ToUpper().ToCharArray())
{
tempCell[indexTemp] = Instantiate(PrefabCharCell);
tempCell[indexTemp].transform.SetParent(GridCellPos, false);
int tName = indexTemp;
tempCell[indexTemp].GetComponent<Button>().onClick.AddListener(() => DeleteSymbol(tName));
tempCell[indexTemp].gameObject.name = indexTemp.ToString();
indexTemp++;
}
}
Он генерирует слово, разбивает на символы, в случайном порядке их расставляет. Здесь переменная Word определена, в итоге и переменная Hint и Path приходит с кнопки, события OnClick.
Первый раз, при запуске сцены, метод отрабатывает хорошо, без ошибок.
После того, как слово отгадано, я обнуляю все переменные другим методом
Используется csharp
public void CleanLevel()
{
for (int i = 0; i < Word.Length; i++)
tempCell[i].GetComponentInChildren<Text>().text = "";
Word = ""; Hint = ""; Path = ""; totalSymbol = 0; indexTemp = 0; numChar = 0; tempAnswer = 0; flChar = 0; randChar = 0; answChar = 0;
AllSymbols.Clear();
GoodAnswerPanel.SetActive(false);
checkAddDel = new int[Word.Length];
RandomSym = new string[14 - Word.Length];
answerSym = new string[Word.Length];
}
В итоге жму на кнопку с уже другими переменными Word, Hint, Path и вываливается ошибка:
ArgumentOutOfRangeException: Argument is out of range.
Parameter name: index
Не могу понять, в чём проблема и почему так происходит. Первые строчки точно отрабатывают нормально, так как меняется Path.
Подскажите пожалуйста, что не так делаю, всю голову сломал.
Спасибо огромное заранее!