UnityのVoid OnGUI()についてのメモ

かなり既出ではあると思いますが、GUIの書き方や使い方を忘れてしまうことが多いため自分用のリファレンスとしてまとめておきます。

まずは基本的なテキスト、ボタン表示から。
今回はテストということで、カメラにスクリプトをアタッチしています。

void OnGUI(){
  //(new Rect(左上のx座標, 左上のy座標, 横幅, 縦幅), "テキスト", スタイル(今は省略))
		GUI.Label (new Rect (50, 50, 50, 50), "Hello."); //テキスト表示
		GUI.Button(new Rect(50, 100, 50, 50),"World."); //ボタン表示
	}

f:id:unitymas_CS:20150620224940p:plain

はい、テキストとボタンを表示することが出来ました。


次に、作ったボタンに機能を持たせる方法です。
これは上記のボタンを表示するスクリプトを少し書き換えるだけで出来ます。

void OnGUI(){
		if(GUI.Button(new Rect(50, 100, 100, 100),"World.")){
                        //命令//
            Debug.Log("Hello,World!");
                }
	}

このようにif文で囲うだけでボタンを機能させられます。
今回の場合だとボタンを押すとHello,World!の文字が出ます。


次にフォントサイズや文字の色を変更する方法です。

public GUIStyle textStyle;
public GUIStyle buttonStyle;

void OnGUI(){
		GUI.Label (new Rect (50, 50, 50, 50), "Hello.", textStyle);
		GUI.Button(new Rect(50, 100, 50, 50),"World.", buttonStyle);
	}

このようにGUIStyleクラスを定義して、表示する文字の次の引数に入れます。
そうすると…
f:id:unitymas_CS:20150620230653p:plain
このようにスタイルを変更するインスペクタが作成されます。
あとはこの中身をいじるだけでフォントサイズや文字色の他にも、背景画像やホバーアクションなどの設定もできます。
試しにテキストをフォント50の赤色、ボタンをフォント25にして背景を付けてみました。f:id:unitymas_CS:20150620231919p:plain
フォントサイズや色の変更は出来ましたが、ボタン内のテキストが上手く表示されません。
このような場合は、インスペクタ内のAlignmentを変更してください。
f:id:unitymas_CS:20150620232156p:plain

これでうまく表示されるようになります。
f:id:unitymas_CS:20150620232354p:plain


また忘れがちなものが増えてきたらまとめようと思います。