1

押すと新しいボタンが開くボタンを作りたいです。両方のボタンを作成する方法は知っていますが、クリックした最初のボタンを非表示にすることはできません。

これまでの私のコードは次のとおりです。

#pragma strict

function Start () 
{
}

function Update () 
{
}

var isButtonVisible  :  boolean  =  true;  

var buttonRectangle  :  Rect     =  Rect(100, 100, 100, 50);

function OnGUI ()
{
    var NewButton = GUI.Button(Rect (Screen.width / 2 - 75, Screen.height / 2 -25,150,50), "this is also a button");

    if ( isButtonVisible ) 
    {
        if ( GUI.Button(Rect (Screen.width / 2 - 75, Screen.height / 2 -25,150,50), "button") ) 
        {
            isButtonVisible = false;


            if ( isButtonVisible ) 
            {
                return NewButton;
            }
        }
    }
}

私はプログラミングが初めてなので、この質問は少し不明確かもしれません。

4

2 に答える 2

1

単なる論理エラーでした。最初に、冗長な別の if ( isButtonVisible ) ブラケット内の if ( isButtonVisible ) をチェックしています。次に、2 番目のボタンを表示する条件 (最初のボタンがクリックされる) と、そのボタンがクリックされるためのブール値フラグ (isButtonVisible == false) がわかっている場合は、isButtonVisible 条件を分岐して、2 番目のボタンを表示することができます。間違い。

最初のボタンで別のボタンを表示し、クリックするとそれ自体を非表示にする必要があると仮定すると、これはあなたが望むことを行うはずです(論理的には一方向にしか流れませんが、最初のボタンはそれ自体を非表示にして2番目のボタンを表示しますが、元に戻すことはできません) )。したがって、元のコードはかなり近いものでした。

var isButtonVisible  :  boolean  =  true;  

var buttonRectangle  :  Rect     =  Rect(100, 100, 100, 50);

function OnGUI ()
{
    if ( isButtonVisible ) 
    {
        if ( GUI.Button(Rect (Screen.width / 2 - 125, Screen.height / 2 -175,150,50), "button") ) 
        {
            isButtonVisible = false;
        }
    }
    else
    {
        var NewButton = GUI.Button(Rect (Screen.width / 2 - 75, Screen.height / 2 -25,150,50), "this is also a button");
    }
}

確かに、これを実装するためのより良い方法がいくつかありますが、問題が解決したことを願っています。

于 2012-09-07T04:27:19.537 に答える