2017-03-11 1 views
0

Bei einem kubischen Raum sucht diese Funktion nach dem nächsten großen leeren Raum, platziert dort einen Marker und wird dann beendet.Warum stürzt Schleife und und nicht gedruckt? Unity3D

Die Funktion druckt jedoch nicht einmal die Prüfmeldung, die vor dem Start der Schleifen existiert, daher weiß ich nicht, wie ich sie debuggen soll. Die Überprüfung beginnt bei 0,0,0, und Leerzeichen außerhalb des Voxels werden als wahr zurückgegeben. Daher sollten alle ersten Schleifen standardmäßig zurückgesetzt und Nachrichten zurückgesendet werden. Der unity.exe-Prozess staut und ich muss ihn abbrechen.

Warum wird nicht gedruckt? Was ist daran falsch? Selbst wenn es langsam ist, sollte ich in der Lage sein, den Fortschritt innerhalb der Schleifen zu verfolgen? Warum nicht?

function findvoidable() //find void space in voxel volume 
{ 
    var step = dist+1; 
    print("start"); WaitForFixedUpdate(); //this doesnt print 

    for (var k : int = 0; k < mesher.PNGpaths.Length ; k+=step/2)   
     for (var j = 0; j < mesher.tex.height ; j+=step/2) 
      for (var i = 0; i < mesher.tex.width ; i+=step/2){ 
       print("in schema");WaitForFixedUpdate(); 
       if (wst(i , j , k  )==false) 
       if (wst(i+step,j  ,k  )==false) 
       if (wst(i-step,j  ,k  )==false) 
       if (wst(i  ,j+step,k  )==false) 
       if (wst(i  ,j-step,k  )==false) 
       if (wst(i  ,j  ,k+step)==false) 
       if (wst(i  ,j  ,k-step)==false) 
       { 

        var cnt=0; 
        for (var x = i-step; x < i+step ; x+=1)  
        for (var y = j-step; y < j+step ; y+=1) 
        for (var z = k-step; z < k+step ; z+=1) 
        { 
         if (wst(x , y , z) == false) 
         cnt+=1; 
        }  
        if (cnt >= step*step*step-3) 
        { 
         refCube.transform.position=Vector3(i,j,k); 
         break;break;break;break;break;break; 
        } 
        else 
        { 
         WaitForFixedUpdate(); 
         refCube.transform.position=Vector3(i,j,k); 
        } 

     } 
    } 
} 

Antwort

Verwandte Themen