2012-12-09 49 views
0

我有一個數組learnnum看起來像[0,1,1,0,1,1,1,1,0]。統一unityscript錯誤

我需要基本上要求用戶輸入鼠標左鍵或鼠標右鍵。如果是Left,那麼[i]的learnnum的值被翻轉,否則什麼都不會發生。我只爲我= 1,3,5,7做到這一點。我已經寫了下面的代碼,但它不能正常工作,而不是所有的4個條件......它直接進入4.它似乎不是等待輸入條件...有沒有什麼辦法可以糾正這個?

function changeNumba(i) 
{  //check1=true; 
     print ("PRINTT "+check1); 
        while(!Input.GetButtonDown("Fire1") && !Input.GetButtonDown("Fire2")) 
        { 
        if(Input.GetButtonDown("Fire1")) 
        { 
        check1++; 
        } 
       if(Input.GetButtonDown("Fire2")) 
        { 
        learnednum[i]=0 ? 1 : 0; 
        check1++; 
        } 
       } 

} 

function changelearn() 
{  

     //FIRST STEP 
     //if(check1)  
     if(move1==9 && check1==0) 
      {changeNumba(1); 

      } 
     //SECOND STEP 
     if(move1==9 && check1==1) 
      {changeNumba(3); 

      } 
     if(move1==9 && check1==2) 
      {changeNumba(5); 

      } 
     if(move1==9 && check1==3) 
      {changeNumba(7); 

      } 
} 





var check1=0; 

//1,3,5,7 
function Update() { 


if(move1==9)//this is just a game condition. Do not bother about it. 
{ 
changelearn(); 
} 

} 

回答

2

從着眼於團結腳本API: http://docs.unity3d.com/Documentation/ScriptReference/Input.GetButtonDown.html

你不應該有你的Update()方法的內部while()循環。

變化changeNumba()如下:

function changeNumba(i) 
{ 
if(Input.GetButtonDown("Fire1")){ 
    check1++; 
} 
if(Input.GetButtonDown("Fire2")){ 
    learnednum[i] = learnednum[i]==0 ? 1 : 0; 
    check1++; 
} 
} 
+0

沒錯,更新它稱爲每一幀不需要while循環,你只會導致遊戲拖慢。除非你的目標是更新,否則當你的目標是永遠不會更新,除非你按住鼠標右鍵9個更新幀,然後它會繼續 – jacobsgriffith