実現したいこと
初めまして、当方初心者なものでunityやスクリプトの仕様などあまり深く理解していないので必要な情報をあらかじめ提示できていないかもしれませんが、そのときは優しく必要な情報、スクリプトなど教えていただけると幸いです。
本題なのですがunityでセーブ機能を作りたく,QuickSaveというAssetを導入し、途中まではうまく扱えていたのですが、複数のデータをセーブ、ロードするとおかしくなってしまいます。
発生している問題・分からないこと
下にあるロード用のスクリプトを10個のオブジェクトに張り付け、SaveDataNumberを1~10に順番に設定し、別々のデータを読み込めるようにしたかったのですが、下のセーブ用のスクリプトではしっかりセーブできている(LocalLowファイルに存在を確認)のにもかかわらず、ロードができません。
しかしなぜかSaveDataNumberが1の場合のみロードでき、SaveDataNumberが1以外に設定されているオブジェクトを1に設定してもSaveData1のデータを正常にロードしてくれ、逆もまた同じく1のオブジェクトを1以外にするとロードしなくなります。
また、jsonファイルの名前をSaveData2(読み込めないファイル)からSaveData1(読み込めるファイル)にすると、SaveData2の内容をSaveDataNumberが1のオブジェクトで読み込むことができます。
エラーメッセージ
error
1特にありませんでした
該当のソースコード
using System; using UnityEngine; using TMPro; using CI.QuickSave; public class NewGameManager : MonoBehaviour { public TMP_InputField SaveDataNameInput; public TMP_InputField PlayerNameInput; public GameObject ManSelectCheckMark; public GameObject WomanSelectCheckMark; public GameObject SaveDataSelectCheckMark; public RectTransform recttransform; public string SaveDataName; public string PlayerName; public bool Man = true; public bool SaveDataExists; public int SaveDataSlot; public int SaveRialTimeYear; public int SaveRialTimeMonth; public int SaveRialTimeDay; public int SaveGameTimeYear; public int SaveGameTimeMonth; public int SaveGameTimeWeek; void Start() { SaveDataNameInput.text = ""; PlayerNameInput.text = ""; Man = true; SaveDataSlot = 1; for (int i = 1; i <= 10; i++) { SaveDataExists = QuickSaveRaw.Exists($"SaveData{i}"); if (SaveDataExists) { } else { SaveDataSlot = i; break; } } recttransform = SaveDataSelectCheckMark.gameObject.GetComponent<RectTransform>(); } void Update() { if (Man) { ManSelectCheckMark.gameObject.SetActive(true); WomanSelectCheckMark.gameObject.SetActive(false); } else { ManSelectCheckMark.gameObject.SetActive(false); WomanSelectCheckMark.gameObject.SetActive(true); } if (SaveDataSlot == 1) { recttransform.anchoredPosition = new Vector2(698, -50); } else if (SaveDataSlot == 2) { recttransform.anchoredPosition = new Vector2(698, -150); } else if (SaveDataSlot == 3) { recttransform.anchoredPosition = new Vector2(698, -250); } else if (SaveDataSlot == 4) { recttransform.anchoredPosition = new Vector2(698, -350); } else if (SaveDataSlot == 5) { recttransform.anchoredPosition = new Vector2(698, -450); } else if (SaveDataSlot == 6) { recttransform.anchoredPosition = new Vector2(1448, -50); } else if (SaveDataSlot == 7) { recttransform.anchoredPosition = new Vector2(1448, -150); } else if (SaveDataSlot == 8) { recttransform.anchoredPosition = new Vector2(1448, -250); } else if (SaveDataSlot == 9) { recttransform.anchoredPosition = new Vector2(1448, -350); } else if (SaveDataSlot == 10) { recttransform.anchoredPosition = new Vector2(1448, -450); } } public void ManButton() { Man = true; } public void WomanButton() { Man = false; } public void SaveData1() {SaveDataSlot =1;} public void SaveData2() {SaveDataSlot = 2;} public void SaveData3() {SaveDataSlot = 3;} public void SaveData4() {SaveDataSlot = 4;} public void SaveData5() {SaveDataSlot = 5;} public void SaveData6() {SaveDataSlot = 6;} public void SaveData7() {SaveDataSlot = 7;} public void SaveData8() {SaveDataSlot = 8;} public void SaveData9() {SaveDataSlot = 9;} public void SaveData10() {SaveDataSlot = 10;} public void Decision() { } public void Determination() { SaveDataName = SaveDataNameInput.text; PlayerName = PlayerNameInput.text; SaveRialTimeYear = DateTime.Now.Year; SaveRialTimeMonth = DateTime.Now.Month; SaveRialTimeDay = DateTime.Now.Day; SaveGameTimeYear = 1; SaveGameTimeMonth = 2; SaveGameTimeWeek = 3; var settings = new QuickSaveSettings(); settings.Password = "sirokumatoinu"; settings.SecurityMode = SecurityMode.Aes; QuickSaveWriter quickSaveWriter = QuickSaveWriter.Create($"SaveData{SaveDataSlot}", settings); quickSaveWriter.Write<string>("SaveDataName", SaveDataName); quickSaveWriter.Write<string>("PlayerName", PlayerName); quickSaveWriter.Write<int>("SaveRialTimeYear", SaveRialTimeYear); quickSaveWriter.Write<int>("SaveRialTimeMonth", SaveRialTimeMonth); quickSaveWriter.Write<int>("SaveRialTimeDay", SaveRialTimeDay); quickSaveWriter.Write<int>("SaveGameTimeYear", SaveGameTimeYear); quickSaveWriter.Write<int>("SaveGameTimeMonth", SaveGameTimeMonth); quickSaveWriter.Write<int>("SaveGameTimeWeek", SaveGameTimeWeek); quickSaveWriter.Commit(); SaveDataNameInput.text = ""; PlayerNameInput.text = ""; Man = true; SaveDataSlot = 1; for (int i = 1; i <= 10; i++) { SaveDataExists = QuickSaveRaw.Exists($"SaveData{i}"); if (SaveDataExists) { } else { SaveDataSlot = i; break; } } } }
using TMPro; using UnityEngine; using CI.QuickSave; public class SaveDataLoadManager : MonoBehaviour { public TextMeshProUGUI SaveDataNameText; public TextMeshProUGUI SaveRialTimeText; public TextMeshProUGUI SaveGameTimeText; public int SaveDataNumber; public bool SaveDataExists; public string SaveDataName; public int SaveRialTimeYear; public int SaveRialTimeMonth; public int SaveRialTimeDay; public int SaveGameTimeYear; public int SaveGameTimeMonth; public int SaveGameTimeWeek; void Update() { Debug.Log(QuickSaveRaw.Exists($"SaveData{SaveDataNumber}")); SaveDataExists = QuickSaveRaw.Exists($"SaveData{SaveDataNumber}"); if (SaveDataExists) { var settings = new QuickSaveSettings(); settings.Password = "sirokumatoinu"; settings.SecurityMode = SecurityMode.Aes; QuickSaveReader quickSaveReader = QuickSaveReader.Create($"SaveData{SaveDataNumber}", settings); SaveDataName = quickSaveReader.Read<string>("SaveDataName"); SaveRialTimeYear = quickSaveReader.Read<int>("SaveRialTimeYear"); SaveRialTimeMonth = quickSaveReader.Read<int>("SaveRialTimeMonth"); SaveRialTimeDay = quickSaveReader.Read<int>("SaveRialTimeDay"); SaveGameTimeYear = quickSaveReader.Read<int>("SaveGameTimeYear"); SaveGameTimeMonth = quickSaveReader.Read<int>("SaveGameTimeMonth"); SaveGameTimeWeek = quickSaveReader.Read<int>("SaveGameTimeWeek"); SaveDataNameText.text = SaveDataName; SaveRialTimeText.text = SaveRialTimeYear + "/" + SaveRialTimeMonth + "/" + SaveRialTimeDay; SaveGameTimeText.text = SaveGameTimeYear + "年" + SaveGameTimeMonth + "カ月" + SaveGameTimeWeek + "週目"; } } }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
・AI(ClaudeAI(Claude,Copilot)に聞き、ソースコード改良
・自分なりに動画や記事、サイトを調べる
・上にあるようにSaveDataの名前を1から2,2から1のように変更し,情報を得る
・unityの再起動
以上のすべてを試して尚まったく改善の兆しが見えません。
補足
unity6の6000.0.46f1
visual studio 2022
を使用

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。