-
-
Save todorok1/6ec04f59612f3b5dcf60b0df7c004db9 to your computer and use it in GitHub Desktop.
シンプルRPGチュートリアル第112回 セーブデータを保持するクラス
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| using UnityEngine; | |
| using System.Collections.Generic; | |
| using System.IO; | |
| using System; | |
| namespace SimpleRpg | |
| { | |
| /// <summary> | |
| /// セーブデータを保持するクラスです。 | |
| /// </summary> | |
| public static class SaveDataHolder | |
| { | |
| /// <summary> | |
| /// 読み込んだセーブファイルのキャッシュです。 | |
| /// </summary> | |
| static SaveFile _saveFile; | |
| /// <summary> | |
| /// 読み込んだセーブファイルのキャッシュです。 | |
| /// </summary> | |
| public static SaveFile SaveFile | |
| { | |
| get { return _saveFile; } | |
| } | |
| /// <summary> | |
| /// セーブファイルを初期化します。 | |
| /// </summary> | |
| public static void InitializeSaveFile() | |
| { | |
| _saveFile = new() | |
| { | |
| saveSlots = new List<SaveSlot>() | |
| }; | |
| } | |
| /// <summary> | |
| /// ファイルをディスクからロードします。 | |
| /// </summary> | |
| public static void Load() | |
| { | |
| // セーブファイルのパスを取得し、存在しない場合はフィールドを初期化します。 | |
| string path = SaveDataUtil.GetSaveFilePath(); | |
| if (!File.Exists(path)) | |
| { | |
| SimpleLogger.Instance.Log($"指定したパスにデータが存在しないため、セーブファイルを初期化します。 path : {path}"); | |
| InitializeSaveFile(); | |
| return; | |
| } | |
| try | |
| { | |
| string loadedText = File.ReadAllText(path); | |
| _saveFile = JsonUtility.FromJson<SaveFile>(loadedText); | |
| SimpleLogger.Instance.Log($"loadedText : {loadedText}"); | |
| } | |
| catch (Exception e) | |
| { | |
| SimpleLogger.Instance.LogError($"ロードに失敗しました。 エラー内容 : {e}"); | |
| InitializeSaveFile(); | |
| } | |
| } | |
| /// <summary> | |
| /// ゲーム内の実行中データをセーブファイルに保存します。 | |
| /// </summary> | |
| public static void Save() | |
| { | |
| var json = JsonUtility.ToJson(_saveFile); | |
| var path = SaveDataUtil.GetSaveFilePath(); | |
| try | |
| { | |
| File.WriteAllText(path, json); | |
| SimpleLogger.Instance.Log($"セーブしたjson : {json}"); | |
| } | |
| catch (Exception e) | |
| { | |
| SimpleLogger.Instance.LogError($"セーブに失敗しました。エラー内容 : {e}"); | |
| return; | |
| } | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment