前提・実現したいこと
JSONを使ってセーブデータを作りたいです。
発生している問題・エラーメッセージ
Unity上のGame画面では特に問題はなかったのですが、WEBGLにビルドしてセーブ(Q)を押すとエラーが発生します。
エラーメッセージ An error occurred running the Unity content on this page. See your browser JavaScript console for more info. The error was: RuntimeError: index out of bounds
該当のソースコード
Player3
1ソースコード 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5using UnityEngine.SceneManagement; 6 7namespace WBMap{ 8 9public class Player3 : player2 10{ 11 #region Singleton 12 private static Player3 instance; 13 public static Player3 Instance 14 { 15 get 16 { 17 if (instance == null) instance = FindObjectOfType<Player3>(); 18 return instance; 19 } 20 } 21 #endregion 22 23 private SaveSystem System => SaveSystem.Instance; 24 25 private UserData Data => System.UserData; 26 27 protected override void Start() 28 { 29 base.Start(); 30 this.transform.position = Data.Pos; 31 } 32 33 void Update() 34 { 35 36 if(Input.GetKeyDown(KeyCode.Q)) 37 { 38 Data.Pos = Player3.Instance.transform.position; 39 SaveSystem.Instance.Save(); 40 } 41 42 if (Input.GetKeyDown(KeyCode.L)) 43 { 44 45 SaveSystem.Instance.Load(); 46 Debug.Log("ロードしました"); 47 48 } 49 50 Vector2 pos = transform.position; 51 52 if (Input.GetKey("down")) 53 { 54 pos.y -= SPEED; 55 animator.SetInteger("YusyaState", 0); 56 } 57 else if (Input.GetKey("right")) 58 { 59 pos.x += SPEED; 60 animator.SetInteger("YusyaState", 1); 61 } 62 else if (Input.GetKey("up")) 63 { 64 pos.y += SPEED; 65 animator.SetInteger("YusyaState", 2); 66 } 67 else if (Input.GetKey("left")) 68 { 69 pos.x -= SPEED; 70 animator.SetInteger("YusyaState", 3); 71 } 72 73 transform.position = pos; 74 } 75 76 //void Awake () { 77 78 79 //if ( this != Instance ) 80 //{ 81 //Destroy ( this.gameObject ); 82 // return; 83 //} 84//} 85} 86}
該当のソースコード
SaveSystem
1ソースコード 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5using System.IO; 6 7namespace WBMap 8{ 9public class SaveSystem 10{ 11#region Singleton 12 private static SaveSystem instance = new SaveSystem(); 13 public static SaveSystem Instance => instance; 14 #endregion 15 16 private SaveSystem(){ Load(); } 17 18 public string Path => Application.dataPath + "/data.json"; 19 20 public UserData UserData { get; private set; } 21 22 public void Save() 23 { 24 string jsonData = JsonUtility.ToJson(UserData); 25 StreamWriter writer = new StreamWriter(Path, false); 26 writer.WriteLine(jsonData); 27 writer.Flush(); 28 writer.Close(); 29 } 30 31 public void Load() 32 { 33 if (!File.Exists(Path)) 34 { 35 Debug.Log("初回起動"); 36 UserData = new UserData(); 37 Save(); 38 return; 39 } 40 StreamReader reader = new StreamReader(Path); 41 string jsonData = reader.ReadToEnd(); 42 UserData = JsonUtility.FromJson<UserData>(jsonData); 43 reader.Close(); 44 } 45} 46}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/12 10:27