2017-08-08 62 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 –