山傘のプログラミング勉強日記[Java & Unity]

プログラミングに関する日記とどうでもよい雑記からなるブログです。

Unityの寺子屋 定番スマホゲーム開発入門 その8

Chapter3 放置ゲームに演出を加えよう

今日でChapter3が終わりました。次のChapterも放置ゲームのブラッシュアップですが、どのような機能を持たせるのか楽しみです。

5節 スコアデータを保存する

ゲームということでデータをセーブすることは欠かせません。JavaFXでゲームを制作していた頃は、テキストファイルに出力してスコアを管理していました。今はJavaFXはお休み中です。ですが、いつか再開したいと思います。

Unityではデータの管理は「PlayerPrefs」というクラスを使います。

docs.unity3d.com

例えば、プレイヤのHPを保存し、保存されてあるプレイヤのHPを取得したいときには次のように書きます。

PlayerPrefes.SetInt("playerHP", 100);
tempPlayerHP = PlayerPrefes.GetInt("playerHP", 50);

1行目のコードでHPを保存していますが、二番目の引数でHPを100として保存しています。2行目では、「playerHP」というキーを元にして保存してあるHPの値を取得していますが、キーに対応するデータがない場合、2番目の引数が使用されます。

放置ゲームなので、スコアの管理の他に時間の管理も必要です。この本では、次のように時間を管理しています。

PlayerPrefs.SetString(KEY_TIME, lastDateTime.ToBinary().ToString());
// 時間の復元
        string time = PlayerPrefs.GetString(KEY_TIME, "");
        if(time == "") {
            // 時間がセーブされていない場合は現在時刻を使用
            lastDateTime = DateTime.UtcNow;
        }else{
            long temp = Convert.ToInt64(time);
            lastDateTime = DateTime.FromBinary(temp);
        }

lastDateTimeはゲームを終了させたときの時刻で、DateTime型です。PlayerPrefsはDateTime型に対応していないので、バイナリ値に変換して保存します。

Unityの寺子屋 定番スマホゲーム開発入門

Unityの寺子屋 定番スマホゲーム開発入門