はじめに
設定画面で「BGMをオンにする」「フルスクリーンで起動する」といったオン・オフの選択肢を作るとき、真っ先に候補に上がるのが CheckBox です。クリックするたびにチェックが切り替わる、おなじみのUIパーツです。
この記事では、CheckBox の仕組みと使いどころ、よく触るプロパティを紹介します。
CheckBoxとは?
CheckBox は オン・オフの2値を切り替えられるトグルボタンです。クリックするたびにチェックマーク(✓)が付いたり外れたりし、現在の状態を button_pressed プロパティで取得できます。
紙のアンケートに並んでいる「□ BGMを有効にする」のチェックボックスをイメージしてください。空欄をクリックすると✓が入り、もう一度クリックすると外れる——CheckBox はその動きをそのままゲームのUIに再現します。
継承ツリーは CheckBox → Button → BaseButton → Control → CanvasItem → Node です。Button を継承しているため、pressed シグナルや button_pressed プロパティなど Button の機能をそのまま使えます。姉妹ノードの CheckButton(032)はトグルスイッチ風の外見で同じ機能を持ちます。

このノードを使うべき場面
- 設定画面のオプション:「BGMを有効にする」「フルスクリーン」「字幕を表示する」などのオン・オフ設定
- 複数選択フィルター:難易度フィルターや表示項目など、複数の独立したオプションを並べるとき
- チュートリアルの「確認しました」:説明を読んだことを確認させる同意チェックボックス
- クエスト・タスクリスト:完了したタスクにチェックを入れる進捗管理UIとして
- デバッグメニュー:当たり判定の表示・非表示など開発中の機能フラグを切り替えるとき
別のノードが適切な場面:
- スライドスイッチ風のトグルにしたい → 同じ機能を持つ
CheckButton(032)を使う - 複数の選択肢から1つだけ選ばせたい(ラジオボタン) →
Buttonのbutton_groupを使う
主なプロパティと機能
CheckBox(および親クラス Button・BaseButton)の代表的なプロパティをまとめました。
| プロパティ | 型 | 役割 |
|---|---|---|
button_pressed |
bool | 現在チェックされているか(true = ON)。読み書き両方できる |
text |
String | チェックボックスの右に表示するラベルテキスト |
toggle_mode |
bool | CheckBox は常に true。トグル動作が前提のノード |
disabled |
bool | true にするとクリックを受け付けなくなる(グレーアウト状態) |
pressed(シグナル) |
Signal | クリックされるたびに発火する |
toggled(シグナル) |
Signal | 状態が切り替わったときに新しい状態(bool)を引数として発火する |
コード例:設定画面でBGMのオン・オフを切り替える
@onready var bgm_check: CheckBox = $BGMCheckBox
func _ready() -> void:
# 保存済みの設定を反映
bgm_check.button_pressed = SaveData.bgm_enabled
# 状態変化のシグナルを接続
bgm_check.toggled.connect(_on_bgm_toggled)
func _on_bgm_toggled(pressed: bool) -> void:
SaveData.bgm_enabled = pressed
AudioServer.set_bus_mute(AudioServer.get_bus_index("BGM"), not pressed)
コード例:複数の CheckBox の状態をまとめて取得する
@onready var options: Array[CheckBox] = [
$FullscreenCheck,
$SubtitleCheck,
$VibrationCheck,
]
func get_settings() -> Dictionary:
return {
"fullscreen": options[0].button_pressed,
"subtitle": options[1].button_pressed,
"vibration": options[2].button_pressed,
}

もっと使いこなす:カスタマイズできるパラメータ
まずは基本を動かしてみてから、余裕が出たら試してみてください。
| パラメータ・テクニック | 変えると何が起きるか |
|---|---|
button_pressed を起動時に設定する |
保存済みの設定値を読み込んでUIに反映できる。設定画面の初期化に必須 |
toggled シグナルを使う |
pressed より toggled の方が現在の状態(bool)を引数で受け取れて便利 |
disabled を true に |
条件を満たさないと変更できないオプションをグレーアウトして表示できる |
| Theme Overrides でアイコンを変える | チェックマークの画像をカスタム画像に差し替えられる。ゲーム独自のUIデザインに |
ButtonGroup を設定する |
同じグループ内で1つだけ選択できるラジオボタン動作になる。難易度選択などに応用できる |

まとめ
CheckBox は 「オン・オフを切り替えるシンプルなトグルUI」 です。
button_pressedで現在の状態を取得・設定できるtoggledシグナルで状態変化を検知し、設定の保存や機能の切り替えに使う- スライドスイッチ風の見た目にしたいときは
CheckButton(032)が同じ機能で使える
次回は、スライドスイッチ風のトグルUI CheckButton を紹介します。
シリーズ:Godot 4 ノード解説
- 001:Node(基底クラス)
- 002:Node2D
- 003:Sprite2D
- 004:AnimatedSprite2D
- 005:CharacterBody2D
- 006:CollisionShape2D
- 007:Area2D
- 008:RigidBody2D
- 009:Camera2D
- 010:Label
- 011:RichTextLabel
- 012:LineEdit
- 013:Button
- 014:HBoxContainer
- 015:VBoxContainer
- 016:GridContainer
- 017:ScrollContainer
- 018:Panel
- 019:TabContainer
- 020:SplitContainer
- 021:HSplitContainer
- 022:VSplitContainer
- 023:FlowContainer
- 024:MarginContainer
- 025:CenterContainer
- 026:AspectRatioContainer
- 027:SubViewportContainer
- 028:TextureRect
- 029:ColorRect
- 030:ProgressBar
- 031:CheckBox(この記事)
- 032:CheckButton
- 033:OptionButton
- 034:SpinBox
この記事はGodot 4.xをもとに執筆しています。


コメント