Событие OnKlick выводит ошибку при срабатывании
Повесил я на объект типа Text компонент Button. Таких объектов у меня 4 и мне нужно их менять во время работы программы. Делаю я это так:
public void MoviesListPlayer(GameObject target)
{
// заполнение окна со способностями, включая функции самих способностей
// принимает на вход того, кого выбрал игрок
if (controller.activeCharacter != ActiveCharacter.None)
{
for (int i = 0; i < 4; i++)
{
Debug.Log("i: " + i);
controller.moviesListPlayer[i].text = this.healingMovies[i].Name;
controller.moviesListPlayer[i].GetComponent<Button>().onClick.AddListener(() => {
this.MoveWasSelect();
this.healingMovies[i].AttackMove(target);
});
}
controller.moviesForFriendlyPanel.SetActive(true);
}
else
{
return;
}
controller.moviesListPlayer[0].GetComponent<Button>().onClick.Invoke();
}
moviesListPlayer - это и есть массив с объектами типа Text.
Последней строкой я проверил догадку и действительно - ошибка происходит именно при нажатии на кнопку. Цикл работает корректно. Методы, которые я повесил на событие не отображаются в инспекторе во время работы. MoveWasSelect() работает, а как очередь доходит до AttackMove(target) так тут движок ворчит о индексе вне массива.
Если вдруг необходимо, то вот функция AttackMove(target) :
public void AttackMove(GameObject target)
{
if (target.CompareTag("Player"))
{
target.GetComponent<PlayerInBattle>().Health -= BaseHealing;
}
}
Текст ошибки вот:
IndexOutOfRangeException: Index was outside the bounds of the array.
PlayerInBattle+<>c__DisplayClass31_1.<MoviesListPlayer>b__0 () (at Assets/Scripts/PlayerBattle/PlayerInBattle.cs:166)
UnityEngine.Events.InvokableCall.Invoke () (at <05f2ac9c8847426992765a22ef6d94ca>:0)
UnityEngine.Events.UnityEvent.Invoke () (at <05f2ac9c8847426992765a22ef6d94ca>:0)
PlayerInBattle.MoviesListPlayer (UnityEngine.GameObject target) (at Assets/Scripts/PlayerBattle/PlayerInBattle.cs:176)
Healer.OnMouseDown () (at Assets/Scripts/PlayerBattle/Healer.cs:34)
UnityEngine.SendMouseEvents:DoSendMouseEvents(Int32)
Как исправить эту ошибку?