WisdomSoft - for your serial experiences.

GUIスタイル

GUI のフォントやサイズといった描画スタイルは GUIStyle クラスを用いて設定します。

テキストのサイズを変更する

ラベル上に表示されるテキストのフォントや色などは GUI スタイルの設定で調整できます。Web 技術で GUI スタイル例えると CSS に近い機能を提供します。

GUI スタイルは UnityEngine.GUIStyle クラスで表されます。

UnityEngine.GUIStyle クラス
public sealed class GUIStyle

このクラスは GUI の描画に必要なフォントや色などの情報を提供します。このクラスのコンストラクタは、以下のようなものがあります。

GUIStyle クラスのコンストラクタ
public GUIStyle()
public GUIStyle(GUIStyle other)

other パラメータには複製元の GUIStyle オブジェクトを指定します。other パラメータを指定した場合は、この GUIStyle オブジェクトの設定が複製されます。

GUIStyle クラスには、GUI 要素のスタイルを設定する各種プロパティが用意されています。例えば、ラベルに表示されるテキストのサイズを変更するには fontSize プロパティを用います。

.GUIStyle クラス fontSize プロパティ
public int fontSize { get; set; }

このプロパティが 0 以外であれば指定したサイズでテキストが描画され、0 であれば既定のサイズが用いられます。このプロパティの既定の値は 0 です。

フォントサイズが有効なのは実行時にフォントデータからラスタライズされるダイナミックフォントで描画される場合のみです。Unity はダイナミックフォントの他に、事前にビットマップ化する固定フォントの方式(ゲームの場合、一般的に固定フォントを使う)も対応しています。固定フォントの場合、フォントサイズは無視されデフォルトのサイズが用いられます。 フォントについての詳細は後述します。

ラベルの描画に GUIStyle オブジェクトを反映させるには、以下の Label() メソッドを用いて描画します。

GUI クラス Label() メソッド
public static void Label(Rect position, string text, GUIStyle style)
public static void Label(Rect position, Texture image, GUIStyle style)
public static void Label(Rect position, GUICentent content, GUIStyle style)

position パラメータには、描画するラベルの長方形領域を指定します。text パラメータには、このラベルに表示するテキストとなる文字列を指定します。image パラメータには、このラベルに表示するテクスチャを指定します。contont パラメータには、ラベルの内容を定義する GUIContent オブジェクトを指定します。ここまでは、前述した各種 Label() メソッドのパラメータと同じです。

末尾の style パラメータに、ラベルの描画に用いて GUI スタイルを表す GUIStyle オブジェクトを指定します。このパラメータを指定しない場合は既定のスタイルが用いられましたが、明示的にスタイルを指定することで任意のフォントや色を用いて GUI 要素を描画できます。 

コード1
using UnityEngine;

public class Test : MonoBehaviour 
{
	private GUIStyle style;
	
	void Start()
	{
		style = new GUIStyle();
		style.fontSize = 30;
	}
	void OnGUI()
	{
		Rect rect = new Rect(10, 10, 400, 300);
		GUI.Label(rect, "Stand by Ready!", style);
	}
}
実行結果
コード1 実行結果

コード1はフォントサイズを 30 に設定した GUIStyle オブジェクトを用いてラベルを描画します。

太字と斜体

斜体や太字といったフォントスタイルは fontStyle プロパティから設定できます。

.GUIStyle クラス fontStyle プロパティ
public FontStyle fontStyle { get; set; }

このプロパティはフォントスタイルを表す UnityEngine.FontStyle 列挙型のいずれかのメンバを設定または取得します。

UnityEngine.FontStyle 列挙型
public enum FontStyle

この列挙型には通常のフォントを表す Normal メンバ、太字を表す Bold メンバ、斜体を表す Italic メンバ、太字と斜体の組み合わせを表す BoldAndItalic メンバの各列挙子が宣言されています。

コード2
using UnityEngine;

public class Test : MonoBehaviour 
{
	private GUIStyle style;
	
	void Start()
	{
		style = new GUIStyle();
		style.fontSize = 30;
	}
	void OnGUI()
	{
		Rect rect = new Rect(10, 10, 400, 300);
		style.fontStyle = FontStyle.Normal;
		GUI.Label(rect, "Normal", style);
		
		rect.y = 60;
		style.fontStyle = FontStyle.Bold;
		GUI.Label(rect, "Bold", style);
		
		rect.y = 110;
		style.fontStyle = FontStyle.Italic;
		GUI.Label(rect, "Italic", style);
		
		rect.y = 160;
		style.fontStyle = FontStyle.BoldAndItalic;
		GUI.Label(rect, "Bold And Italic", style);
	}
}
実行結果
コード2 実行結果

コード2は太字と斜体のフォントスタイルでラベルを描画します。

色と背景

GUI 要素に表示されるテキストの色と背景は GUI の状態に応じて設定できます。GUI 要素はフォーカスやマウスカーソルが当てられているなど、いくつかの状態によって外観を変更できます。通常の状態は normal プロパティによって表されます。

GUIStyle クラス normal プロパティ
public GUIStyleState normal { get; set; }

このプロパティは GUI が既定の状態に採用される色と背景を表します。GUI の色と背景は UnityEngine.GUIStyleState クラスによって表されます。 

UnityEngine.GUIStyleState クラス
public sealed class GUIStyleState

このクラスのコンストラクタは、特にパラメータを受け取りません。

GUI 要素の色は textColor プロパティから、背景は background プロパティ から設定または取得できます。背景が設定されている場合、指定したテクスチャで GUI の背景が塗りつぶされます。

GUIStyleState クラス textColor プロパティ
public Color textColor { get; set; }
GUIStyleState クラス background プロパティ
public Texture2D background { get; set; }

GUIStyle クラスや GUIStyleState クラスも、フィールドとして公開すれば Unity エディタから編集できます。コードから動的に値を生成する必要がある場合を除いて、デザイナが GUI スタイルを Unity エディタ上で編集できるようにするべきでしょう。

コード3
using UnityEngine;

public class Test : MonoBehaviour 
{
	public GUIStyleState styleState;
	private GUIStyle style;
	
	void Start()
	{
		style = new GUIStyle();
		style.fontSize = 30;
	}
	
	void OnGUI()
	{
		Rect rect = new Rect(10, 10, 400, 300);
		style.normal = styleState;
		GUI.Label(rect, "Stand by Ready!", style);
	}
}
実行結果
コード3 実行結果

コード3は GUIStyleState 型の styleState フィールドを公開し、実行時にラベルに設定する GUIStyle オブジェクトの normal プロパティに設定しています。実行結果を見れば「Inspector」ウィンドウからフィールドに設定した色と背景で描画されていることが確認できます。