Kli*_*ker 1 c# infinite-loop while-loop unity-game-engine
我从类似的帖子中知道,无限的while循环因导致Unity3d崩溃而臭名昭著。我想隐含地在我正在处理的东西中进行一会儿循环,我相当确定这不是“无限”,但会导致游戏崩溃。
逻辑的想法是检查整数列表中的连续数字,并以此为基础应用加分。该列表包含“有效射击”,并且每次射击时都会添加一个新的int-有效射击越连续,奖金就越高。
这是我所拥有的:
int count = 0;
int firstItem = 0;
int multiples = 3;
int currentMultiple = 0;
int bonusX = 0;
foreach (int i in effectiveShots)
{
if (count == 0)
{
firstItem = i;
count = 1;
}
else if (i == firstItem + count)
{
count++;
}
}
while (count >= multiples)
{
currentMultiple = multiples;
if (count == currentMultiple + multiples)
{
bonusX += 1;
}
if (bonusX > 10 || gameOver)
break;
UnityEngine.Debug.Log(bonusX);
}
Run Code Online (Sandbox Code Playgroud)
要检查在个连续程序条目的逻辑effectiveShots名单是从@乔恩飞碟双向的答案采取这里。尽管这似乎可行,但我认为这可能是问题所在。一旦错过任何一击,就count需要重新设置。有什么想法或建议吗?
一旦连续有效击球数达到第一个倍数即3击,则应进入while循环。然后,此后对于每组后续有效射击,增加奖励,例如:
3 shots: bonusX = 1
6 shots: bonusX = 2
9 shots: bonusX = 3
12 shots: bonusX = 4
and repeat this until `count` is no longer >= 3, i.e. the player missed a shot.
Run Code Online (Sandbox Code Playgroud)
问题是,一旦我击中3次连发命中并进入此循环,游戏就会崩溃。我不认为我会称其为无限循环,因为错过击球机会(设置count == 0)会意味着while条件不再成立,因此退出循环(我认为?)。我还添加了额外的检查以在某些情况下脱离循环,但这没有什么区别。
如果您能够指导如何解决此崩溃问题,或者总体上对更好的方法提出建议,不胜感激!