2017-04-11 14 views
-1

エディタで私はメニューで行いました:GameObject> UI> Button これで階層にaボタンを持つキャンバスができました。 今、私は、ボタンを表示しないで、エスケープキーを押したときだけ、ボタンを表示するゲームを実行しています。エスケープキーを押したときにゲームビューでUiボタンを非表示にしてボタンを表示するにはどうすればいいですか?

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using UnityEngine.UI; 

public class NodesGenerator : MonoBehaviour { 

    public Button btnGenerate; 

    private void Start() 
    { 
     Button btn = btnGenerate.GetComponent<Button>(); 
     btn.onClick.AddListener(TaskOnClick); 
    } 

    void TaskOnClick() 
    { 
     Debug.Log("You have clicked the button!"); 
    } 

私がエスケープキーを押すと、btnが表示され、再びエスケープすることは表示されません。ゲームを実行しているときのデフォルト状態は、ボタンを表示していません。

答えて

3

「隠す」とは、ボタンを押しているオブジェクトを非アクティブにすることを意味します。エスケープキーを押すかどうかを確認するには、更新機能をチェックインする必要があります。ヒットした場合は、ボタンのアクティブ状態を元に戻すだけで済みます。

補足として、Start関数では、すでにbtnGenerate変数で参照されているため、Buttonコンポーネントを再度取得する必要はありません。したがって、btnGenerate変数にリスナーを直接追加することができます。

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using UnityEngine.UI; 

public class NodesGenerator : MonoBehaviour { 

    public Button btnGenerate; 

    private void Start() 
    { 
     btnGenerate.onClick.AddListener(TaskOnClick); 
    } 

    void Update() 
    { 
     if (Input.GetKeyDown(KeyCode.Escape)) 
     { 
      btnGenerate.gameObject.SetActive(!btnGenerate.gameObject.activeSelf); 
     } 
    } 

    void TaskOnClick() 
    { 
     Debug.Log("You have clicked the button!"); 
    } 
} 
関連する問題