2017-03-11 14 views
0

3次空間を指定すると、この関数は次の大きな空白を検索し、そこでマーカーを配置してから終了します。ループがクラッシュして印刷されないのはなぜですか? Unity3D

しかし、関数はループの開始前に存在するチェックメッセージを出力しないので、デバッグ方法はわかりません。チェックは0,0,0から開始し、ボクセルの外側のスペースはtrueとして返されるので、最初のループをすべてデフォルトにしてメッセージを返すべきです。 unity.exeプロセスのジャムと私はそれを中止する必要があります。

なぜ印刷されませんか?他に何が間違っていますか?それが遅い場合でも、私はループ内の進捗状況を追跡することができるはずですか?それはなぜでしょうか?

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); 
        } 

     } 
    } 
} 

答えて

1

WaitForFixedUpdateコルーチンであり、通常の方法のように実行されることになっていません。

代わりに、 "歩留まり" 声明を試してみてください。

yield WaitForFixedUpdate(); 

さらに詳しい情報:https://docs.unity3d.com/ScriptReference/Coroutine.html

+0

おかげで、それが固定されます。 –

関連する問題