今回も 超初心者なネタをやっていきますよ〜 おそらく、普通のプログラマーさんなら迷わないと思います |
とはいえ AndroidやiOSとの マルチプラットフォーム対応を考えるとどうしていいか迷ってしまうわよね |
ということで、ここでは Unityの機能を使って無理なく実装してみよう といった趣旨の感じになるぞ |
アセットストアを漁れば ゲームデータ保存のアセットとか出てくると思います 高機能な保存がしたいという方はそちらをお使いください |
今回ご紹介するのは OSのシステム領域に保存されるため なるべく軽いデータだけにしましょう |
ゲームの中断データやユーザーメイクデータなどは データが大きくなりがちなので 推奨しないわ。あと保存方法もさほどしっかりしてるものではないしね |
ランキングデータやコンフィグデータなど ゲームのシステムに関わるもの に使うといいかもしれないな |
Player Prefsを使う
// 保存 PlayerPrefs.SetInt(string key, int i); PlayerPrefs.SetFloat(string key, float f); PlayerPrefs.SetString(string key, string s); // 読み込み int i =PlayerPrefs.GetInt(string key); float f =PlayerPrefs.GetFloat(string key); string s =PlayerPrefs.GetString(string key);
上のコードだけで セーブ&ロードが出来ます 1変数=1セーブと言った感じで保存する内容が多いと使いづらいですよね |
/// ============================================================== ///セーブ処理 /// -------------------------------------------------------------- /// /// ============================================================== public static void SetSaveData() { // セーブ用にJSON型に変換 GameDataSaveScript mData = new GameDataSaveScript(); mData.mHighHitRate = mHighHitRate; // 最高命中率スコア mData.mHighDodgeRate = mHighDodgeRate; // 最高回避率スコア mData.mHighTurnRate = mHighTurnRate; // 最高ターンスコア mData.mHighScore = mHighScore; // ハイスコア mData.mIsPlayBGM = mIsPlayBGM; // BGM mData.mIsPlaySE = mIsPlaySE; // SE mData.mIsLiteMode = mIsLiteMode; // 軽量化モード // JSON型に変化 string lStringSaveData = JsonUtility.ToJson(mData); PlayerPrefs.SetString("SaveData", lStringSaveData); Debug.Log("セーブ処理"); Debug.Log(lStringSaveData); } /// ============================================================== ///ロード処理 /// -------------------------------------------------------------- /// /// ============================================================== public static void SetLoadData() { // ロード string lStringSaveData = PlayerPrefs.GetString("SaveData", ""); // セーブデータ // データがない if (lStringSaveData == "") { return; } // Json型から指定の型に変更 GameDataSaveScript mData = JsonUtility.FromJson< GameDataSaveScript>(lStringSaveData); mHighHitRate = mData.mHighHitRate; // 最高命中率スコア mHighDodgeRate = mData.mHighDodgeRate; // 最高回避率スコア mHighTurnRate = mData.mHighTurnRate; // 最高ターンスコア mHighScore = mData.mHighScore; // ハイスコア mIsPlayBGM = mData.mIsPlayBGM; // BGM mIsPlaySE = mData.mIsPlaySE; // SE mIsLiteMode = mData.mIsLiteMode; // 軽量化モード Debug.Log("ロード処理"); Debug.Log(lStringSaveData); }
これ、最近作ったゲームの生コードなんですが この部分はおそらく同じような形になると思うのでそのまま載せます Jsonを使って複数の変数を一つのデータで保存しています |
保存したいデータの J 受け皿となるClassを一つ書いてその中にデータを入れるの それをJson変換でテキスト化しているわ |
Jsonっていうのは 複数のプログラム間でデータの行き来をしやすくした テキストデータみたいな感じだ |
Web系でよく使われている気がします CSVもその一つですねJSONは親子構造も可能なので クラスや構造体のデータを保存したいときに扱いやすいです |
今回は軽めでした 冬月が大規模開発をはじめてまた保存方法が必要になった時 改めてセーブデータのメモ書きをしたいと思います |