ラベル
テキストの表示
ラベルは文字列をテキストとして描画する最も単純な GUI 要素です。単にテキストを描画することが目的であればラベルを用いると便利です。スコアの表示やデバッグ用のデータ表示などに応用できるでしょう。
GUI 要素の描画や管理は UnityEngine.GUI クラスによって行われます。
public class GUI
GUI クラスは GUI 要素を描画するための各種メソッドを提供しています。例えば、ラベルを画面に描画するには Label() メソッドを呼び出します。このメソッドはいくつかオーバーロードされていますが、最も簡単なものは、表示する場所と文字列のみを指定する以下のメソッドです。
public static void Label(Rect position, string text)
position パラメータには、描画するラベルの長方形領域を指定します。この長方形領域の左上隅からテキストが開始されます。text パラメータには、このラベルに表示するテキストとなる文字列を指定します。
他の標準的な GUI ライブラリ(Windows フォーム、WPF、Java Swing など)を使ったことがあれば、この設計には違和感を覚えるでしょう。Unity では GUI 要素をインスタンスとして保持するのではなく、フレームごとにレイアウトして描画します。そのため、常に OnGUI() メソッド内で GUI の状態を更新し続けます。
using UnityEngine; public class Test : MonoBehaviour { void OnGUI() { Rect r = new Rect(0, 0, 400, 50); GUI.Label(r, "Stand by Ready!"); } }
コード1はゲーム画面の左上隅からラベルを表示するスクリプトです。
テクスチャ
ラベルは文字列のほかに、任意のテクスチャ(画像ファイルなど)を表示することもできます。テクスチャは UnityEngine.Texture 型によって表されます。
public class Texture extends UnityEngine.Object
テクスチャの詳細については後述します。JPEG や PNG といった標準的な画像ファイルは Unity エディタに追加すると自動的にテクスチャとして認識されます。この場では、Texture 型のフィールドを公開して、Unity エディタからアセットに登録されているテクスチャを選択することにします。
テクスチャをラベルとして表示するには、以下の Label() メソッドを用います。
public static void Label(Rect position, Texture image)
position パラメータには、描画するラベルの長方形領域を指定します。この長方形領域の左上隅にテクスチャが貼られます。image パラメータには、このラベルに表示するテクスチャを指定します。
using UnityEngine; public class Test : MonoBehaviour { public Texture texture; void OnGUI() { Rect rect = new Rect(10, 10, 400, 300); GUI.Label(rect, texture); } }
コード2は Texture 型の texture フィールドを公開しているため、Unity エディタの「Inspector」ウィンドウからテクスチャを設定できます。プロジェクトのアセットに追加されている任意のテクスチャを設定してください。