Godot4 ビッグカツブロック崩し31 スライダーで音量変更後に設定を保存

※この連載の全ての記事は、タグ「ビッグカツ」の検索一覧から探すことができます。
※この連載で作ったゲームは「BigBreakOut(ゲームの作り方の記事付き) | フリーゲーム投稿サイト GodotPlayer」でプレイできます。

昔から人気の駄菓子「ビッグカツ」フリー素材画像が公開されたので、無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 を使って、ビッグカツ画像を使ったブロック崩しを作成します。

「ビッグカツブロック崩し」作成の第31回では、以前に作成したセーブデータを管理する save_data.gd スクリプトのメンバ変数 sound_volume (音量)の値を、タイトル画面の下側に配置した音量調節の水平スライダーHSlider )で音量を変更した際に保存する実装例を紹介します。

※ 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

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

まとめ

「ビッグカツブロック崩し」作成の第31回では、以前に作成したセーブデータを管理する save_data.gd スクリプトのメンバ変数 sound_volume (音量)の値を、タイトル画面の下側に配置した音量調節の水平スライダーHSlider )で音量を変更した際に保存する実装例を紹介しました。

参照サイト Thank You!

記事一覧 → Compota-Soft-Press

コメント

Ads Blocker Image Powered by Code Help Pro

お願い - Ads Blocker Detected

このサイトは広告を掲載して運営しています。

ポップアップを閉じて閲覧できますが、よろしければ

このサイト内の広告を非表示にする拡張機能をオフにしていただけませんか?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました