我知道(從類似的帖子),無限的while循環臭名昭着導致Unity3d崩潰。我正在努力在我正在工作的某個東西中加入一個while循環,我相當確信這不是'無限',但卻導致遊戲崩潰。雖然循環崩潰Unity,但不是無限的
邏輯思想是檢查連續數字的整數列表,並以此作爲申請獎金的基礎。該列表包含「有效鏡頭」,並且每次拍攝時都會添加一個新的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);
}
檢查中effectiveShots
列表個連續程序條目的邏輯是從@喬恩飛碟雙向的答案here拍攝。雖然這似乎有效,但我認爲這可能是問題所在。一旦錯過了一槍,count
需要重置。 任何意見或建議?
一旦連續有效鏡頭的計數達到第一倍數即3鏡頭,就應該進入while循環。然後,對於此後的每一套consequtive有效投籃,增加獎金,例如:
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.
的問題是,只要我打3個consequtive鏡頭和進入這個循環中,遊戲崩潰。我不認爲我會稱之爲一個無限循環,因爲缺少一個鏡頭 - 設置count == 0
- 意味着條件不再是真的,因此退出循環(我認爲?)。在某些情況下,我還添加了額外的檢查以打破循環,但這沒有什麼不同。
如果您能夠指導如何解決這個崩潰問題,或者對一般性更好的方法提出建議,將不勝感激!
尚未'使遊戲crash.'您能不能告訴我們的價值崩潰的截圖? – mjwills
只要'count> =倍數','while'循環應該運行**永遠**。你應該在'while'循環中減少'count',以便它變成'
Programmer
你的「無限循環」**無限運行** – maccettura