前提
Unityにてゲームを作成中です。
セーブ機能を実装しようとQuick Saveというアセットを導入し、ネット上に記載されていた同アセットの使い方を参考に、
①ゲーム全体で使用する変数および、起動時にロードを行う処理を記載したスクリプト”GameData.cs”
と、
②ボタンを押すことで"GameData.cs"内の変数を書き換え、同時にその数値をJsonに書き出すスクリプト
の2つのスクリプトを作成しました。
しかし、Jsonファイルに変数を書き出すところまでは上手く行ったのですが、それをロードするところがうまく動いてくれません。
また、エラーメッセージはありません。
どなたか原因を教えていただきたいです。
下がスクリプトを作る際に参考にさせていただいたサイトです
https://fineworks-fine.hatenablog.com/entry/2022/09/01/073000
実現したいこと
ロード処理を実行できるようにする。
該当のソースコード
C#
1//1番のスクリプト 2 3using System.Collections; 4using System.Collections.Generic; 5using System; 6using UnityEngine; 7using CI.QuickSave; 8 9public class GameData 10{ 11 //ゲーム全体で使う変数 12 public static byte test; 13 14 void Start() 15 { 16 //ロード処理 17 // QuickSaveReaderのインスタンスを作成 18 QuickSaveReader reader = QuickSaveReader.Create("GameData"); 19 // データを読み込む 20 byte test = reader.Read<byte>("Test"); 21 22 //ロードが正常に行われたかの確認用。ここには0と表示される。 23 Debug.Log("Test:" + test); 24 } 25} 26 27 28//2番のスクリプト 29 30using System.Collections; 31using System.Collections.Generic; 32using UnityEngine; 33using UnityEngine.UI; 34using CI.QuickSave; 35 36public class TestScript : MonoBehaviour 37{ 38 public void OnClick() 39 { 40 GameData.test = 1; 41 42 //セーブ処理 43 // QuickSaveWriterのインスタンスを作成 44 QuickSaveWriter writer = QuickSaveWriter.Create("GameData"); 45 // データを書き込む 46 writer.Write("Test", GameData.test); 47 writer.Commit(); 48 49 //正常にセーブされたかの確認用。ここには1と表示される。 50 Debug.Log(GameData.test); 51 } 52}
試したこと
①のスクリプトのロード処理部分をStartではなくAwakeに入れてみたり、別スクリプトに移してボタンを押したらロードするようにしてみましたが、それでも変化はありませんでした。
補足情報(FW/ツールのバージョンなど)
Unity2021.3.10f1
上記のとおり、セーブ時のDebug.Logには正常な数値が表示されているのでセーブまでは動いています。
が、ロードすると初期値の0になってしまいます。

回答1件
あなたの回答
tips
プレビュー