ノード解説「Label」

Node解説

はじめに

ゲームのHPバー上に「HP: 100/100」と表示したい、または画面に説明文を出したいなど、テキストを画面に表示する場面は多くあります。Godotで文字列を表示するなら、まず最初に出会うのがLabelノードです。

この記事では、Labelノードの使い方と、実際のゲーム開発で活躍するカスタマイズ方法をみていきます。

Labelとは?

Labelノードは、ゲーム画面上にテキスト(文字列)を表示するノードです。スコア、HPゲージの数字、会話ウィンドウ、ボタンのラベルなど、文字を出す場面ではほぼ必ず登場します。

看板に書かれた文字を見るように、Label はゲーム画面に「テキストを貼り付ける」ノード。看板のサイズや文字の色・大きさは自由に変えられます。

Labelは CanvasItem を継承しており、2D描画の基本機能を持っています。

このノードを使うべき場面

  • ゲーム画面にスコアやHP、レベルなど数値を表示したい
  • ゲーム開始画面や一時停止画面にメッセージやタイトルを表示したい
  • ボタンやメニューアイテムにテキストラベルを付けたい
  • 会話や説明文など、複数行のテキストを表示したい
  • 画面上の位置を指定してUI要素としてテキストを配置したい

一方、以下のようなケースではLabelは適していません:

  • リッチテキスト(複数の色や装飾が混在)を本格的に使いたい場合 → RichTextLabel を検討
  • 入力フィールドが必要な場合 → LineEditTextEdit を使う

主なプロパティと機能

プロパティ / メソッド 説明 型 / 戻り値
text 表示するテキスト String
modulate テキストの色(RGB値) Color
add_theme_font_size_override() フォントサイズを変更 void
alignment テキストの配置(左揃え、中央、右揃え) HorizontalAlignment
custom_minimum_size ノードが占める最小サイズ Vector2
autowrap_mode テキストが長いときの自動折り返し設定 TextServer.AutowrapMode

基本的な使用例を見てみましょう:


extends Node2D

func _ready():
    # Labelノードを作成
    var label = Label.new()
    label.text = "Hello, Godot!"
    label.position = Vector2(100, 50)
    add_child(label)

func _process(delta):
    # スコアを毎フレーム更新する例
    $Label.text = "Score: %d" % score

スクリプトでテキストを更新するときは、text プロパティに直接代入するだけです。

もっと使いこなす:カスタマイズできるパラメータ

まずは基本を動かしてみてから、余裕が出たら試してみてください。

1. 文字の色を変える(modulate)

Labelに限らず、Godotのノードは modulate プロパティで色を指定できます。赤色で表示する例:


label.modulate = Color.RED  # 赤
label.modulate = Color(1.0, 0.5, 0.0)  # オレンジ(RGB値で指定)
label.modulate.a = 0.5  # 透明度を50%に

HPが少ないときは赤、多いときは緑、といった動的な色変更が可能です。

2. フォントサイズを変える

デフォルトでは小さく表示されるため、UI要素としてサイズを大きくしたいことがほとんどです:


label.add_theme_font_size_override("font_size", 32)  # サイズを32に

この方法がGodot 4.0の標準です。

3. テキストの配置を変える(alignment)

デフォルトは左揃えですが、中央揃えや右揃えに変更できます:


label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER  # 中央揃え
label.horizontal_alignment = HORIZONTAL_ALIGNMENT_RIGHT   # 右揃え

タイトル画面に表示するテキストなら中央揃え、HPの数字を右揃えにするなど、UI の見た目が整います。

4. テキストの自動折り返し

説明文が長いときに、Labelの幅を超えた部分を自動的に次の行に折り返せます:


label.autowrap_mode = TextServer.AUTOWRAP_WORD
label.custom_minimum_size = Vector2(300, 0)  # 幅を300に制限

会話ウィンドウやゲームオーバー画面のメッセージを表示するときに便利です。

5. ノードのサイズを明示的に指定

custom_minimum_size でLabelが占める矩形領域を指定できます:


label.custom_minimum_size = Vector2(200, 100)  # 幅200、高さ100に固定

複数のLabelを並べるUI レイアウトを作るときに重要です。

6. オフシット(相対位置)を使う

ノード自体の位置ではなく、描画時のオフセットを指定できます:


label.offset = Vector2(10, 5)  # テキスト描画位置を右に10、下に5ピクシルずらす

細かい位置調整が必要なとき、スクリプトで動的に変更できます。

まとめ

Labelノードはテキストを表示するシンプルで強力なノードです。スコア表示からUIメニューまで、幅広い用途で活躍します。

  • テキストを更新するには text プロパティに代入するだけ
  • 色やサイズ、配置はプロパティやメソッドで自由にカスタマイズ可能
  • 複数のLabelを組み合わせてUI画面全体を構築できる

次回は、Labelの応用形であるRichTextLabel(複数の色や装飾を含むテキスト)について解説します。

シリーズ:Godot 4 ノード解説

この記事は Godot 4.x をもとに執筆しています。

コメント