現在の状況
こんにちは、現在カレンダーをUnityで制作しており、その情報が格納されたJSONファイルをiOS上で読み込ませることに苦戦しています。
MACOS、Windows環境にて、StreamingAssets内部のフォルダーをコピーして、presistentDataPathの階層にスクリプトからコピー生成をして、それを読み込ませることに成功しております。こちらと同じ動作をiOS環境で再現しようとしています。
using System.Collections; using System.Collections.Generic; using System; using System.Runtime.CompilerServices; using UnityEngine; using System.IO; using UnityEngine.Networking; using UnityEngine.UI; using System.Linq; using System.Threading.Tasks; using UnityEngine.SceneManagement; public void Start() { //月にごとにパスを読み込ませる string Date = GameObject.Find("MainDate").GetComponent<Text>().text; string s1 = Date.Substring(0, 7); string s2 = s1.Replace("/", ""); s3 = "/LifeLog/Monthly/Log" + s2 + ".json"; //jsonファイル数を読み込み string path = Application.dataPath + "/" + "StreamingAssets"; string[] files = Directory.GetFiles(path, "*.json", SearchOption.AllDirectories); Debug.Log(files.Length); jsonString = Application.persistentDataPath + s3; StreamingJson = new string[files.Length]; SendJson = new string[files.Length]; //Jsonヌルを取得 StreamingJson[0] = Application.streamingAssetsPath + "/LifeLog/Monthly/Log000000.json"; SendJson[0] = Application.persistentDataPath + "Log000000.json"; FileCopy(StreamingJson[0], SendJson[0]); for (int t = 0; t< files.Length; t++) { string TrimNum = s2.Substring(0, 4); if(t < 10) { ConvertNum = TrimNum.Insert(4, "0" + t.ToString()); ConvertNum.Insert(4, "00"); } if(10< t) { ConvertNum = TrimNum.Insert(4, t.ToString()); ConvertNum.Insert(4, "00"); } if (ConvertNum.Substring(4, 2) != "00") { StreamingJson[0] = Application.streamingAssetsPath + "/LifeLog/Monthly/Log" + ConvertNum + ".json"; SendJson[0] = Application.persistentDataPath + ConvertNum + ".json"; FileCopy(StreamingJson[0], SendJson[0]); } } //jsonファイルをインスタンス後、一度更新しないと正しくアクティブが表示されないので更新 ReSet(); Call(); } public void ReSet() { //ファイルが存在しないなら更新する if (System.IO.File.Exists(Application.persistentDataPath + "Log000000.json") == false) { SceneManager.LoadScene("UICalendar"); } } void FileCopy(string StreamingJson, string jsonString) { if (System.IO.File.Exists(jsonString)== false) { File.Copy(StreamingJson, jsonString); } } IEnumerator FileCopyForAndroid(string StreamingJson, string jsonString) { using (var webRequest = UnityWebRequest.Get(StreamingJson)) { yield return webRequest.SendWebRequest(); if (webRequest.isNetworkError || webRequest.isHttpError) { yield break; } File.WriteAllBytes(jsonString, webRequest.downloadHandler.data); } } public void Call() { #if UNITY_IOS var request = UnityWebRequest.Get(jsonString); var Text = File.ReadAllText(jsonString); var jsonText = request.downloadHandler.text; #endif jsonData = new MonthlyLog(); } }
解決したいこと
スクリプトから一部抜粋していますが、ビルドしてテスト起動自体には成功しており、カレンダー自体は問題なく動作しています。しかし、JSONだけが読み込まれていない状態です。原因はStreamingAssetsのフォルダーを読み込んでいない、あるいは読み込んでいてもpresistentDataPathにコピー生成することに失敗している。という状況にのように思えます。
大変恐縮ですが、iOSでのJSONファイルのコピー生成及び読み込みにはwindowsやmacOSとは違った何か特殊な書き方があるのでしょうか?ご教授お願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/17 08:53