Godot4 ビッグカツブロック崩し30 セーブファイル削除と記録のリセット例

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

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

「ビッグカツブロック崩し」作成の第30回では、前回作成した最速タイム (BestTime) のセーブデータを、タイトル画面に追加したリセットボタンを押すことで最速タイムの記録を無効にするスクリプト例を紹介します。
また、GodotEngine4 エディタの F5 キーでメインシーンから実行して保存したセーブファイルの保存場所についても紹介します。

※ GodotEngine 4.3 を使用しています。.NET 版ではありません。
※スクリプトは自己責任でご使用ください。

前回の記事

前回は、ゲームクリア時の最速タイムをセーブデータから読み込み、まだ記録されていない場合非表示記録があれば表示し、さらに速いタイムでクリアすれば更新する処理の実装例を紹介しました。

エディタ上でのセーブデータを消す方法

セーブデータがない状態でテストしたい場合は、「%APPDATA%\Godot\app_userdata\」のアプリ名のフォルダにある .save 拡張子のファイルを削除します。
そのファイルをテキストエディタなどで開くことで、セーブデータの内容を確認することもできます。

※上記は Windows OS で、 GodotEngine4 エディタ上で実行した際にファイルが保存されるフォルダパスです。

このフォルダは、メニュー「プロジェクト」→「ユーザーデータフォルダーを開く」からアクセスすることもできます。

Godot4 ビッグカツブロック崩し セーブファイルのフォルダの開き方

最速タイムの記録のリセット

タイトルのシーンを開いて、 2D ワークスペースで BestTime Reset ボタン (Button クラス派生ノード) を配置して、その button_up() シグナル受信側メソッドの関数を title_scene.gd に追加します。

Godot4 ビッグカツブロック崩し BestTime Reset ボタンの作成

title_scene.gd に追加した、ボタンが離されたときの button_up() シグナルの受信側メソッドに以下のように処理を定義します。

これにより、ボタンが押されると、その受信側メソッドが呼び出されます。
その受信側メソッドの関数内で、グローバルノード SaveDataGlobal のメンバ関数を呼び出すことで、ベストタイムを初期化 (best_time メンバ変数に -1.0 を設定)します。
※詳細はスクリプトのコメントを参照してください。

## BestTime Reset ボタンが離された際に呼び出される関数(受信側メソッド)です。
func _on_button_best_time_reset_button_up():
	# ボタンの効果音を再生します。
	SCUtil.AudioStreamOneShotPlay(SCUtilGlobal, audio_stream_button)
	# ベストタイムのセーブデータを初期化します。
	$"/root/SaveDataGlobal".init_best_time()
	return

以下が、ベストタイムを初期化する静的関数です。
今回の仕様では、ベストタイムの値が -1 の場合は、無効な値として扱うので、 -1 に変更してセーブしています。

## ベストタイムを初期化します。
## プレイ中の BestTime のラベルの表示を更新するには ステージのシーンの $BestTime.update_label() を呼び出してください。
func init_best_time()->void:
	best_time = -1.0	# ベストタイムを初期値に変更します。
	save_app_data()	# セーブします。
	return

テスト

F5 キーで、設定したメインシーン、タイトルシーンから実行します。
※メインシーンの設定は、メニュー「プロジェクト」→「プロジェクト設定」「一般」タブツリー「アプリケーション」→「実行」「メインシーン」項目で設定できます。

以前に記録された最速タイムが左上の BestTime の下に表示されています。
次に、タイトルに戻り、タイトル画面の下側の BestTime Reset ボタンを押した後に、プレイを開始すると、有効な最速タイムの記録がないために、さきほどは左に表示されていた BestTime の表示が消えました。

まとめ

「ビッグカツブロック崩し」作成の第30回では、前回作成した最速タイム (BestTime) のセーブデータを、タイトル画面に追加したリセットボタンを押すことで最速タイムの記録を無効にするスクリプト例を紹介しました。
また、GodotEngine4 エディタの F5 キーでメインシーンから実行して保存したセーブファイルの保存場所についても紹介しました。

参照サイト 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をコピーしました