private void DetermineEnemySelection()
{
int _totalCount = 0;
for(int i = 0; i < enemyCounts.Length; i++)
{
_totalCount += enemyCounts[i];
}
Stack<int> rn = new Stack<int>();
for(int i = 0; i < _totalCount; i++)
{
int _sel = Random.Range(0, 5);
if(enemyCounts[_sel] == 0)
{
}
}
}
Контекст: templeCounts [] содержит количество врагов каждого типа (врагиCounts [0] - количество врагов типа 1, которые появятся в волне)
_totalCount - общее количество враги, которые будут появляться на волне, включая врагов всех типов. Моя идея состояла в том, чтобы иметь стек чисел, который будет идентификатором типа врага. Числа go от 0 до 6 будут выбиты случайным образом. Если врагаCounts [_sel] пусто, я хочу создать новое случайное число и, если возможно, исключить это случайное число из диапазона (поэтому, если врагиСчета [3] пусто, возможно, сгенерировать числа 0 1 2 4 5)
Я не могу найти решение. У меня уже был один, который вовлекал какое-то время l oop, но через некоторое время игра по какой-то причине потерпела крах, достигнув 2701470 попыток сгенерировать следующего врага, что привело к краже sh. Мне бы хотелось, чтобы стек, в конце концов, имел длину _totalCount (чтобы у вас не было повторяющихся врагов) и выглядел примерно так {0,1,2,0,4,1,0,3,2,0,3 , 5,1,5,3,3,2,2,0} et c. Это означает, что это будет преемственность врагов.
Как лучше всего подойти к этому без бесконечных петель?