По какой-то причине это выдает следующее сообщение об ошибке в строке sortOrderList.Add ():
Индекс был вне диапазона. Должен быть неотрицательным и меньше размера коллекции.
Вот структура базы данных, которую я сортирую.
То, что выполняет часть приведенного ниже сценария, - это создание списка местоположений индексов для каждого из типов, которые можно найти в разных местоположениях, в зависимости от их порядка загрузки. Список sortOrderList показывает порядок загрузки каждого из типов, где a для l oop может перебирать от 0 до sortOrderList.Count - 1 для учета всех различных типов во всех объединенных категориях и доступа к ним позже в Сценарий ниже.
Например, если ниже указаны местоположения разных типов, каждый из которых имеет свой метод: Список {тип1 1, тип2 2, тип2 3, тип1 4, тип1 5, тип2 6}, то где type2 загружается первым, sortOrderList равен {2, 3, 6, 1, 4, 5}. type1 и type2 должны представлять методы, определенные в приведенном ниже сценарии.
foreach (DataClasses.DependencyMethodEnum method in dataClasses.DependencyMethodOrder)//for order of dependencies; add SortOrderList after the localTypeNames have been completely filled
{
for (int i1 = 0; i1 < categoryNames.Count; i1++)//for each category i1
{
for (int i2 = 0; i2 < listsTypeNames[i1].Count; i2++)//for each type i2
{
if (listsTypeMethods[i1][i2] == method)//if the dependency order aligns with the current type
{
int iterations = 0;
bool breaking = false;
for (int i4 = 0; i4 < categoryNames.Count; i4++)//again for each category i4; this is to sort out where the original order would be on the main list Lists//IS INEFFECTIVE: CALLS THE SAME ONE INSIDE EACH CATEGORY
{
for (int i5 = 0; i5 < listsTypeNames[i4].Count; i5++)//for each type i5
{
Debug.Log(localTypeNames.Count);//high number....
Debug.Log(sortOrderList.Count);//0... so why is there an error when I later use .Add?
if (listsTypeNames[i4][i5] == listsTypeNames[i1][i2] && (sortOrderList.Count == 0 || (sortOrderList.Count != 0 && listsTypeNames[i4][i5] != localTypeNames[sortOrderList[sortOrderList.Count - 1]])))
{
Debug.Log("PASS");
Debug.Log("ITERATIONS:" + iterations);
Debug.Log("SOL COUNT: " + sortOrderList.Count);
sortOrderList.Add(iterations);//adds where the original position would have been for the type in the order of where it is in the local list//ERROR HERE
Debug.Log("sol " + sortOrderList.Count + " : " + localTypeNames[sortOrderList[iterations]]);
breaking = true;
break;
}
iterations++;
}
if (breaking)
{
break;
}
}
}
}
}
}
Почему это происходит? Я не обращаюсь к указанному индексу c в слое sortOrderList.Add (), но все равно выдает ошибку. Вот лог.

Заранее спасибо!