Unity3d 入門 05 「ボタン・キー入力」

今回は、画面上のボタンやキーからの入力について説明します。
まず、カメラ・光源・床・GUI Text のオブジェクトを配置します。
続いて、コンポーネントスクリプト NewBehaviorScript を作り、
それを GUI Text に貼り付けます。


まず、ボタンを画面上に出してみましょう。
以下のようにスクリプトを編集します。

public class NewBehaviourScript : MonoBehaviour {
	void Start () {	
	}	
	void Update(){
	}
	void OnGUI(){
		if(GUI.Button(new Rect(50,100,50,50),"Click")) this.guiText.text = "Button is clicked !";
	}
}

引数の new Rect(50,100,50,50) では、ボタンを配置する場所(左、上)とボタンのサイズ(横、縦)を指定してます。
また、"Click" はボタンに表示する文字です。
さっそくゲームを実行してみます。
GUI Text」と表示されていたのが、ボタンを押すと「Button is clicked !」に変わります!


次は文字入力を表示してみましょう。

public class NewBehaviourScript : MonoBehaviour {
	void Start () {	
	}	
	void Update(){
	}
	void OnGUI(){
		if(GUI.Button(new Rect(50,100,50,50),"Click")) this.guiText.text = "Button is clicked !";
		this.guiText.text = GUI.TextField(new Rect(50,200,50,50),this.guiText.text);
	}
}

よく分からない仕様なのですが、
GUI.TextField の第2引数と返り値に渡す変数は同じでなければならない、
とのこのなので、これらには this.guiText.text を渡しています。
今後、改善されることを期待しましょう。
ゲームを実行し、文字を入力するとその文字が真ん中にも出てくるようになりました!


続いてキー入力です。
以下のようにスクリプトを編集します。

public class NewBehaviourScript : MonoBehaviour {
	void Start () {	
	}	
	void Update(){
		if(Input.anyKeyDown) this.guiText.text = "Any key is down !";
	}
}

ゲームを実行し、何かキーを押すと、
GUI Text」から「Any key is down !」へと文字表示が変わります。

また、特定のキーにだけ対応したいならば以下のようにします。

if (Input.GetKeyDown(KeyCode.Space)) this.guiText.text = "Space !";

この場合は、スペースキーを押した場合のみ文字表示が変わります。