2017-08-08 64 views
1

我知道(從類似的帖子),無限的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 - 意味着條件不再是真的,因此退出循環(我認爲?)。在某些情況下,我還添加了額外的檢查以打破循環,但這沒有什麼不同。

如果您能夠指導如何解決這個崩潰問題,或者對一般性更好的方法提出建議,將不勝感激!

+0

尚未'使遊戲crash.'您能不能告訴我們的價值崩潰的截圖? – mjwills

+5

只要'count> =倍數','while'循環應該運行**永遠**。你應該在'while'循環中減少'count',以便它變成' Programmer

+2

你的「無限循環」**無限運行** – maccettura

回答

4

while循環不會做改變,無論是countmultiples等條件將總是計算出相同的值=>無限循環

+0

我想也值得注意的是,這種情況看起來比他預期的更爲罕見(因爲它也會在評估爲真10次後結束循環):if(count == currentMultiple + multiples) ' –

+0

如果'count == 6' AFAICS,則爲true –