【发布时间】:2020-06-11 18:29:26
【问题描述】:
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)
{
}
}
}
上下文:enemyCounts[] 包含每种类型的敌人数量(enemyCounts[0] 是将在波中生成的类型 1 的敌人数量)
_totalCount 是波中生成的敌人总数,包括所有敌人类型。 我的想法是有一堆数字作为敌人的类型 ID。数字从 0 到 6,将随机推送。如果enemyCounts[_sel] 为空,我想创建一个新的随机数,并在可能的情况下从范围中排除该随机数(因此如果enemyCounts[3] 为空,则可能生成数字0 1 2 4 5)
我找不到解决方案。我已经有一个涉及while循环的游戏,但由于某种原因,这导致游戏在一段时间后崩溃,尝试生成下一个敌人导致崩溃的次数达到2701470。我有点想要一个最终具有 _totalCount 长度的堆栈(这样你就不会得到重复的敌人)并且看起来有点像这样 {0,1,2,0,4,1,0,3,2,0,3 ,5,1,5,3,3,2,2,0} 等表示这将是一系列敌人。
没有任何无限循环的最佳方法是什么?
【问题讨论】: