はじめに
ゲームのHPバー上に「HP: 100/100」と表示したい、または画面に説明文を出したいなど、テキストを画面に表示する場面は多くあります。Godotで文字列を表示するなら、まず最初に出会うのがLabelノードです。
この記事では、Labelノードの使い方と、実際のゲーム開発で活躍するカスタマイズ方法をみていきます。
Labelとは?
Labelノードは、ゲーム画面上にテキスト(文字列)を表示するノードです。スコア、HPゲージの数字、会話ウィンドウ、ボタンのラベルなど、文字を出す場面ではほぼ必ず登場します。
看板に書かれた文字を見るように、Label はゲーム画面に「テキストを貼り付ける」ノード。看板のサイズや文字の色・大きさは自由に変えられます。
Labelは CanvasItem を継承しており、2D描画の基本機能を持っています。
このノードを使うべき場面
- ゲーム画面にスコアやHP、レベルなど数値を表示したい
- ゲーム開始画面や一時停止画面にメッセージやタイトルを表示したい
- ボタンやメニューアイテムにテキストラベルを付けたい
- 会話や説明文など、複数行のテキストを表示したい
- 画面上の位置を指定してUI要素としてテキストを配置したい
一方、以下のようなケースではLabelは適していません:
- リッチテキスト(複数の色や装飾が混在)を本格的に使いたい場合 →
RichTextLabelを検討 - 入力フィールドが必要な場合 →
LineEditやTextEditを使う
主なプロパティと機能
| プロパティ / メソッド | 説明 | 型 / 戻り値 |
|---|---|---|
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 ノード解説
- 001. Node
- 002. Node2D
- 003. Sprite2D
- 004. AnimatedSprite2D
- 005. CharacterBody2D
- 006. CollisionShape2D
- 007. Timer
- 008. Area2D
- 009. Camera2D
- 010. Label(このページ)
- 011. RichTextLabel
- 012. LineEdit
- 013. Button
- 014. HBoxContainer
- 015. VBoxContainer


コメント