Как отрисовать массив элементов с помощью цикла for

нужна помощь. У меня есть карточки монстров, которые привязаны к конкретным объектам. Мне надо, чтобы при вызове метода AddEnemyToQueue(EnemyName) проверялось, есть ли карточка с таким именем в папке Resources и если MatchInArray != null, то поместить карточку с именем этого врага в лист ListElements<GameObjects> и отрисовать каждый элемент из этого списка с помощью цикла for.

Пусть, есть бесконечное количество команд AddEnemyToQueue, тогда и количество элементов<GameObject> в нем бесконечно, для этого есть переменная int MaxElements = x, которая ограничивает отрисовку элементов в Unity, чтобы не отрисовывать бесконечное количество элементов.

При отрисовке всех элементовListElements<GameObject> выдается следующая ошибка.

ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

public List<GameObject> ListElements = new List<GameObject>();

public string[] TileNames = new string[] { };
TileNames = Directory.GetFiles(TileNamesPath);

private void AddEnemyToQueue(string EnemyName)
{
    //Check if Tile with enemy name exists
    var MatchInArray = TileNames.Where(item => item.Contains(EnemyName)).FirstOrDefault();

    if (MatchInArray != null)
    {
        
        ListElements.Add(Resources.Load<GameObject>(TilePrefabDir+EnemyName));
        
        for (int l = 0; l < MaxElements; l++)
        {
            GameObject ListElement = Instantiate(ListElements[l]);
            ListElement.transform.SetParent(ContentContainer.transform, false);
            ListElement.name = l.ToString();
        }
    }
}

Первая карточка с индексом [0] символизирует врага на поле с которым дерется игрок


Ответы (1 шт):

Автор решения: Алексей Шиманский

Выход за границы массива. Наверняка в ListElements количество элементов меньше, чем указано в MaxElements. Смотрите в отладчике что у вас в MaxElements и совпадает ли это число с количеством в списке. А если не уверены, то надо перед циклом делать проверку о совпадаении количества, либо в цикле, если l меньше количества, то делать break

→ Ссылка