0

我有一个数组 learnnum,看起来像 [0,1,1,0,1,1,1,1,0]。

我基本上需要询问用户输入鼠标左键或鼠标右键。如果 Left,则 [i] 的 learnnum 的值被翻转,否则什么也不会发生。我只对 i=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();
}

 }
4

1 回答 1

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++;
}
}
于 2012-12-09T05:59:26.213 回答