前提・実現したいこと
Unityにてゲームを作っています。
ゲームクリア後に再び最初からゲームを始める際、
リスタートボタンを押したら、
セーブデータ初期化(Jsonファイルの削除など)→ニューゲーム
の実装をしたいです。
現在、Jsonファイルをセーブデータとして使っています。
書き出しと読み込みは、StreamReaderの機能を使っています。
GameManagerクラスのスクリプトにある変数の値を、
SaveDateクラスのスクリプトにそのままコピーして、
それをJsonファイルにしています。
発生している問題・エラーメッセージ
セーブデータを初期化する方法がわからず、困っています。
Jsonファイルの削除(もしくは初期値に書き換える)を行って、
データを引き継がずに最初から始める、という処理をしたいです。。
ですが、下記のように、File.Deleteメソッドを行っても、
Unityフォルダ内にあるJsonファイルが消えていません。
特にエラーメッセージも出ません。
現在、ニューゲームするときは、Assetsファイルから右クリックで削除してから
始める・・・というようなことをしています。
該当のソースコード
GameManager
1 2 static SaveDate SaveDatedayo = new SaveDate(); //保存場所 3 public int money; 4 5 public void Awake() 6 { 7 DoLoad(); 8 money = SaveDatedayo.money;//お金 9 } 10//・・・中略・・・ 11 public void DoSave() //セーブ処理 12 { 13 SaveDatedayo.money = money; //お金 14 Save(SaveDatedayo); 15 } 16 17public void DoLoad() //ロード処理 18 { 19 SaveDatedayo = Load(); 20 } 21 22 public void Save(SaveDate SaveDatedayo)//セーブのためにJsonファイル書き出し 23 { 24 StreamWriter writer; 25 26 string jsonstr = JsonUtility.ToJson(SaveDatedayo); 27 28 writer = new StreamWriter(Application.dataPath + "/savedata.json", false); 29 writer.Write(jsonstr); 30 writer.Flush(); 31 writer.Close(); 32 33 } 34 35public SaveDate Load()//ロードのためにJsonファイル読み込み 36 { 37 if (File.Exists(Application.dataPath + "/savedata.json")) 38 { 39 string datastr = ""; 40 StreamReader reader; 41 reader = new StreamReader(Application.dataPath + "/savedata.json"); 42 datastr = reader.ReadToEnd(); 43 reader.Close(); 44 45 return JsonUtility.FromJson<SaveDate>(datastr); 46 } 47 48 SaveDate SaveDatedayo2 = new SaveDate(); 49 50 return SaveDatedayo2; 51 52 } 53 54 public void PushRestartButton()//リスタート(ニューゲーム)ボタン 55 { 56 if (File.Exists(Application.dataPath + "/savedata.json")) 57 { 58 File.Delete(Application.dataPath + "/savedata.json"); 59 } 60 Scene ThisScene = SceneManager.GetActiveScene(); 61 SceneManager.LoadScene(ThisScene.name); 62 }
試したこと
上記では、リスタートボタンにつける
PushRestartButtonメソッドの中で、
既存のJsonセーブデータファイルを削除しようとしています。
(が、削除されません)
セーブとロードはうまくいっています。
変数の手動での書き換えによる初期化(SaveDatedayo.money = 0など)
もやろうとしましたが、変数の数が多いので、
この方法では大変だなと思っています。
伝わりにくいかもしれませんが、教えて頂ければ幸いです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー