※この連載の全ての記事は、タグ「ビッグカツ」の検索一覧から探すことができます。
※この連載で作ったゲームは「BigBreakOut(ゲームの作り方の記事付き) | フリーゲーム投稿サイト GodotPlayer」でプレイできます。
昔から人気の駄菓子「ビッグカツ」のフリー素材画像が公開されたので、無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 を使って、ビッグカツ画像を使ったブロック崩しを作成します。
「ビッグカツブロック崩し」作成の第31回では、以前に作成したセーブデータを管理する save_data.gd スクリプトのメンバ変数 sound_volume (音量)の値を、タイトル画面の下側に配置した音量調節の水平スライダー( HSlider )で音量を変更した際に保存する実装例を紹介します。
![](https://compota-soft.work/wp1/wp-content/uploads/2024/09/GodotEngine4.3-公式サイトの一部-20240911.png)
※ GodotEngine 4.3 を使用しています。.NET 版ではありません。
※スクリプトは自己責任でご使用ください。
前回の記事
前回は、タイトル画面に追加したリセットボタンを押すことで最速タイムの記録を無効にするスクリプト例を紹介しました。
保存するタイミング
音量調節のスライダーを実装して以前の記事では、 changed() シグナルの受信側メソッドの関数を定義して、値が変わるごとにテスト用の効果音を再生し、セーブデータを管理する SaveDataGlobal グローバルノードの sound_volume メンバ変数を変更しました。
しかし、ファイルに sound_volume の値を保存するタイミングは、スライダーで調整が済んで、そのスライダー以外を選択した際で良いと判断しました。
そこで、focus_exited() シグナルを受信するメソッドを追加して、そこでセーブを行います。
focus_exited() シグナルの受信側メソッドの作成
シーンドックで、スライダーのノード(例では $HSliderSoundVolume)を選択した状態で、ノードドックを開いてシグナルのリストの focus_exited() をダブルクリックします。
「メソッドにシグナルを追加」ダイアログが表示されたら、 すでに title_scene.gd スクリプトを割り当てている TitleScene ルートノードを選択して「接続」ボタンを押します。
これで、 title_scene.gd スクリプトに、「受信側メソッド」項目のテキストボックスに書かれている名前の受信側メソッドの関数が追加されました。
![Godot4 ビッグカツブロック崩し SaveData 用のスクリプトとグローバルノードの作成と設定5](https://compota-soft.work/wp1/wp-content/uploads/2025/01/Godot4-ビッグカツブロック崩し-SaveData-用のスクリプトとグローバルノードの作成と設定5-1024x690.png)
TitleScene ルートノードに割り当てられている title_scene.gd に追加されたスライダーの focus_exited() シグナルの受信側メソッドの関数は以下のように定義します。
※詳細はスクリプト内のコメントを参照してください。
## 音量調節のスライダーからフォーカスが外れた際に、その音量をセーブします。
func _on_h_slider_sound_volume_focus_exited():
# スライダー UI の現在選択されている音量の値(0.0 ~ 1.0) を取得して、セーブデータの変数を更新します。
$"/root/SaveDataGlobal".sound_volume = $HSliderSoundVolume.value
# セーブデータを保存します。
$"/root/SaveDataGlobal".save_app_data()
return
テスト
F5 キーで、メインシーンのタイトルのシーンを実行します。
※メインシーンの設定は、メニュー「プロジェクト」→「プロジェクト設定」の「一般」タブのツリー「アプリケーション」→「実行」の「メインシーン」項目で設定できます。
タイトル画面の下側の音量調節のスライダーのハンドルをマウスドラッグで移動させます。
例では 0 ~ 1 の間の 0.5 から 0.3 へ変更しました。
そのあと、スライダー以外のタイトル画面の余白をクリックしたことで、スライダーのフォーカスが外れて、focus_exited() シグナルが送られ、受信側メソッドでセーブの処理が行われます。
その後、一度アプリを閉じて、再び F5 キーで起動すると、先ほど変更した値(例では 0.3)でスライダーの値が最初からセットされていて、セーブとロードが正常に動作したことを確認できました。
![Godot4 ビッグカツブロック崩し 音量調節スライダーの focus_exited シグナルのタイミングで音量を保存し、起動時に読み込む動作の確認SS1](https://compota-soft.work/wp1/wp-content/uploads/2025/01/Godot4-ビッグカツブロック崩し-音量調節スライダーの-focus_exited-シグナルのタイミングで音量を保存し、起動時に読み込む動作の確認SS1.png)
まとめ
「ビッグカツブロック崩し」作成の第31回では、以前に作成したセーブデータを管理する save_data.gd スクリプトのメンバ変数 sound_volume (音量)の値を、タイトル画面の下側に配置した音量調節の水平スライダー( HSlider )で音量を変更した際に保存する実装例を紹介しました。
参照サイト Thank You!
- Godot Engine – Free and open source 2D and 3D game engine
- Xユーザーのビッグカツといか姿フライのすぐる【公式】さん: 「使いどころは思いつきませんが、フリー素材としてどうぞご自由にお使いくださいませ! https://t.co/8F9q3hS02b」 / X
- しょかきうたげ【フリーフォント版あり】 – ぼんのう堂 – BOOTH
- シグナルの使用 — Godot Engine (4.x)の日本語のドキュメント
- HSlider — Godot Engine (4.x)の日本語のドキュメント
記事一覧 → Compota-Soft-Press
コメント