【Unity】テキストの表示方法まとめ。書式もサイズも変更可能。Label()やGUIStyleStateの使い方。

2021年7月29日

どうも、だらはです。
今回はUnityEngine.GUIクラスを使ってテキストの表示方法について見ていきたいと思います。
具体的には以下について紹介したいと思います。

  • GUIクラスのLabel()メソッド
  • GUIContentクラス
  • GUIStyleクラスのfontSizeプロパティ
  • GUIStyleクラスのfontStyleプロパティ
  • GUIStyleクラスのnormalプロパティ
  • GUIStyleStateクラスのtextColorプロパティ
  • GUIStyleStateクラスのbackgroundプロパティ

スポンサーリンク

テキストを表示する

最も簡単なテキストの表示方法は、UnityEngine.GUIクラスLabel()メソッドを使う方法です。
位置と文字列だけを指定するだけで、ゲームシーンにテキストを表示することができます。

public static void Label(Rect position, string text)

第一引数のRectは、(left, top, width, height)の4つの要素を持つ構造体です。
画面の左上隅を原点とする長方形領域を指定します。

第二引数のstringは、表示したい文字列を指定します。
これだけです。

筆者
筆者
本当に簡単にテキスト表示できますた('ω’)

◆ゲームシーンにテキストを表示するスクリプト

using UnityEngine;

public class TxtSmp : MonoBehaviour
{
    public string txt = "テキストを表示しましたぞww";

    private void OnGUI()
    {
        Rect rect1 = new Rect(10, 10, 400, 300);
        GUI.Label(rect1, txt);
    }
}

GUIの描画には、OnGUI()メソッドを使います。
OnGUI()メソッドはフレームごとにレイアウトして描画します。つまりUpdate()メソッドみたいな使い方です。
詳細な実行タイミングについてはUnity公式HPのリファレンスを参照ください。

実行結果は、本稿の最後にまとめて貼りたいと思います。

テキストとテクスチャを同時に表示する

テキストだけを表示するのはGUIクラスLabel()メソッドで事足りました。
テクスチャも表示したい場合はUnityEngine.GUIContentクラスのコンストラクタを使います。

※テクスチャだけを表示する方法は別の記事にまとめたのでそちらを参照頂けたらと思います。

◆テクスチャを表示する方法

public GUIContent()
public GUIContent(string text)
public GUIContent(Texture image)
Public GUIContent(string text, Texture image)

textには表示させる文字列を、imageには表示させる文字列を指定します。
また、GUIContentを引数として受け取るGUIクラスLabel()メソッドも準備されていたりします。

public static void Label(Rect position, GUIContent content)

◆テキストとテクスチャを同時に表示するスクリプト

using UnityEngine;

public class TxtContent : MonoBehaviour
{
    public GUIContent Gcontent;
    public Texture TexMan = null;

    void Start()
    {
        Gcontent = new GUIContent();
        Gcontent.text = "うほおww";
        Gcontent.image = TexMan;
    }

    private void OnGUI()
    {
        Rect rect2 = new Rect(10, 200, 400, 300);
        GUI.Label(rect2, Gcontent);
    }
}

因みにですが、GUIContentクラスをpublicにするとInspectorから以下のように変更可能になります。

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

表示されるテキストの文字サイズを変更するには、UnityEngine.GUIStyleクラスfontSizeプロパティを使います。

public int fontSize {get; set;}

fontSizeが0だと既定のサイズが、0以外だと指定したサイズでテキストが描画されます。

◆文字サイズを大きくするスクリプト

using UnityEngine;

public class TxtBig : MonoBehaviour
{
    private GUIStyle style;

    void Start()
    {
        style = new GUIStyle();
        style.fontSize = 30;
    }
    private void OnGUI()
    {
        Rect rect3 = new Rect(10, 350, 400, 500);
        GUI.Label(rect3, "Bigです", style);
    }
}

フォントの書式を変更する

太字や斜体などのように書式を変えるにはUnityEngine.GUIStyleクラスfontStyleプロパティを使います。

public FontStyle fontStyle {get; set;}

FontStyleUnityEngine.FontStyle列挙型です。以下のメンバを持ちます。

  • Normal:通常
  • Bold:太字
  • Italic:斜体
  • BoldAndItalic:太字と斜体の両方

◆書式を変更するスクリプト

using UnityEngine;

public class TxtStyle : MonoBehaviour
{
    private GUIStyle style;

    void Start()
    {
        style = new GUIStyle();
        style.fontSize = 50;
    }
    
    private void OnGUI()
    {
        Rect rect4 = new Rect(500, 10, 1000, 300);
        style.fontStyle = FontStyle.Normal;
        GUI.Label(rect4, "Normal", style);

        rect4.y = 100;
        style.fontStyle = FontStyle.Bold;
        GUI.Label(rect4, "Bold", style);
    }
}

テキストの色を変更する

テキストの色と背景は、GUIStyleクラスnormalプロパティによって取得できます。
テクスチャの色はtextColorプロパティから、背景はbackgroundプロパティから取得できます。
値を設定するときは、GUIStyle.normalに値を代入するようにして設定します。

◆テキストの色を変更するスクリプト

using UnityEngine;

public class TxtColor : MonoBehaviour
{
    private GUIStyle style;
    private GUIStyleState styleState;

    void Start()
    {
        style = new GUIStyle();
        styleState = new GUIStyleState();
        style.fontSize = 50;
    }

    private void OnGUI()
    {
        Rect rect5 = new Rect(500, 200, 510, 210);
        styleState.textColor = Color.red;
        style.normal = styleState;
        GUI.Label(rect5, "色変更", style);
    }
}

◆実行結果

最後に

いかがでしたでしょうか。
テキストを表示するにはLabel()メソッドを使います。
Label()メソッドは設定が沢山あるので覚えるのが大変です。
なので、いっそのことお気に入り登録してくださると嬉しいです\(^o^)/ふひひ

また補足ですが、スマホなどの解像度違いでは、本稿の内容だけでは意図しない実行結果となります。
(Label()メソッドはGUIを位置情報で指定するため)

以下の記事にて、複数の解像度に対応する方法をまとめたので参考にして頂けたらと思います。

◆複数の解像度に対応する方法

以上、だらはでした。

スポンサーリンク

基礎

Posted by daraha_gm