質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

WebGL

WebGL(ウェブジーエル)は、ウェブブラウザで 3次元コンピュータグラフィックスを表示させるための標準仕様です。

Q&A

解決済

1回答

4692閲覧

( Unity)JSONを使ってセーブデータを作っているのですがWEBGL上でうまく動きません

sho0

総合スコア6

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

WebGL

WebGL(ウェブジーエル)は、ウェブブラウザで 3次元コンピュータグラフィックスを表示させるための標準仕様です。

0グッド

0クリップ

投稿2020/05/12 03:32

編集2020/05/12 03:34

前提・実現したいこと

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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

エディタ以外ではApplication.dataPathには保存できません。
Application.persistentDataPathに保存してください。

あと、読み込みも出来ません。
こちらはApplication.streamingAssetsPathを使ってください。

投稿2020/05/12 10:16

編集2020/05/12 10:22
fiveHundred

総合スコア10152

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sho0

2020/05/12 10:27

ありがとうございます。 助かりました。 また機会がありましたらよろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問