対象読者:Godotの基本操作を少し触ったことがある初級者の方
はじめに
ゲーム内のチャット欄やメモ機能など、複数行の文章を入力させたいときに使うのが TextEdit です。1行だけの入力ならLineEditで十分ですが、改行を含む長い文章を扱うならTextEditの出番です。
TextEditとは?
TextEditは、複数行のテキストを表示・編集できるUIノードです。改行、カーソル移動、範囲選択、コピー&ペーストなど、テキストエディタとして必要な基本機能を標準で備えています。
たとえるなら、TextEditはメモ帳アプリそのものです。1行に収まらない長い文章を、自由に改行しながら書き込めます。
TextEdit は Control → CanvasItem → Node を継承しています。他のControl系ノードと同じく、アンカーやサイズでレイアウトを調整できます。
このノードを使うべき場面
- ゲーム内チャットやメッセージの入力欄を作るとき
- プレイヤーがメモや日記を書き込める機能を作るとき
- 複数行にわたる設定値やスクリプトを編集させたいとき
- 入力欄の規模が大きくなるほど重要になるノードです: 長文入力やチャット履歴など、テキスト量が増えるほどTextEditの折り返し・スクロール機能が活きてきます
使わない・別のノードが適切な場合:
- 1行だけの入力(名前やパスワードなど) → LineEdit を使う
- 編集させたくない、表示だけしたい → RichTextLabel や Label を使う
- コードの入力補完やシンタックスハイライトが必要 → CodeEdit(TextEditを継承した専用ノード)を使う
使うかどうかの目安: 入力欄に改行が必要になった時点でLineEditからTextEditへ切り替えましょう。逆に1行で済むならLineEditの方がシンプルです。
主なプロパティと機能
TextEditの代表的なプロパティとメソッドを以下にまとめました。
| プロパティ/メソッド | 役割 | 型 |
|---|---|---|
text | 入力・表示されているテキスト全体 | String |
placeholder_text | 未入力時に表示する薄いヒント文字 | String |
editable | 編集可能かどうか | bool |
wrap_mode | 行の折り返し方法 | int |
get_line(line) | 指定した行のテキストを取得 | String |
insert_text_at_caret(text) | カーソル位置にテキストを挿入 | void |
text_changed | テキストが変更されたときに発火するシグナル | Signal |
もっと使いこなす:カスタマイズできるパラメータ
まずは基本を動かしてみてから、余裕が出たら試してみてください。
1. テキストの取得と変更検知
貼り付け先の準備: ①シーンツリーで+ボタンから「TextEdit」を検索して追加 ②インスペクターでplaceholder_textなどを設定 ③右クリックして「アタッチスクリプト」→GDScriptのまま「作成」を押し、開いたエディタに以下を貼り付け
extends TextEdit
func _ready() -> void:
placeholder_text = "ここにメモを入力..."
text_changed.connect(_on_text_changed)
func _on_text_changed() -> void:
print("現在の内容: ", text)
2. 読み取り専用モードにする
ログ表示やチャット履歴など、ユーザーに編集させたくない場合はeditableをfalseにします。
editable = false # 編集不可、表示専用にする
よくある質問:似たノードとの違い
Q. TextEditとLineEditの違いは?
A. LineEdit は1行だけの入力欄です。改行を含む複数行の文章を扱いたいならTextEditを使います。
Q. TextEditとCodeEditの違いは?
A. CodeEditはTextEditを継承し、行番号表示やコード補完、シンタックスハイライトなど、プログラムコードの編集に特化した機能を追加したノードです。普通の文章入力ならTextEditで十分です。
Q. TextEditとRichTextLabelの違いは?
A. RichTextLabel は編集不可の表示専用ノードです。ユーザーに文字を打たせたいならTextEdit、装飾された文章を表示するだけならRichTextLabelを使います。
まとめ
TextEdit は、複数行のテキスト入力を扱うための標準ノードです。
- チャット欄やメモ機能など、改行を含む文章入力が必要な場面で活躍します
- text、editable、placeholder_textなど、基本のプロパティから覚えましょう
- editableをfalseにすれば、ログ表示など読み取り専用の用途にも使えます
次の記事では、複数の項目から選択させる ItemList を解説します。
関連性の高いノード解説記事
- Godot入門:Node
- Godot入門:Node2D
- Godot入門:Sprite2D
- Godot入門:Control
- Godot入門:Button
- Godot入門:Label
- Godot入門:LineEdit
- Godot入門:TextEdit
- Godot入門:ItemList
- Godot入門:RichTextLabel
この記事はGodot 4.xをもとに執筆しています。


コメント