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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Unity

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

Q&A

解決済

1回答

1960閲覧

[Unity] IOS端末でjsonファイルの保存ができない

Ponkiti27

総合スコア9

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Unity

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

0グッド

0クリップ

投稿2020/01/22 06:59

困っていること

Unity上で作成したアプリを、ビルドしてIOS端末でテストプレイをしてみたのですが、jsonファイを保存することができません。

環境

unity 2019.3.0f3
Xcode 11.2.1(11B53)
IOS 11.4.1

コード

C#

1static void SavePlayerDate(PlayerDate playerdate) 2 { 3 StreamWriter writer; 4 string jsonstr = JsonUtility.ToJson(playerdate); 5 writer = new StreamWriter(Application.streamingAssetsPath + "/playerdata.json", false); 6 writer.Write(jsonstr); 7 writer.Flush(); 8 writer.Close(); 9 } 10 11static PlayerDate LoadPlayerData() 12 { 13 string datastr = ""; 14 StreamReader reader; 15 reader = new StreamReader(Application.streamingAssetsPath + "/playerdata.json"); 16 datastr = reader.ReadToEnd(); 17 reader.Close(); 18 return JsonUtility.FromJson<PlayerDate>(datastr); 19 }

上記のコードでjsonファイルのロードとセーブを行っています。
Unity上ではセーブとロードの両方とも正常に動作しています。
IOS端末上ではロードの方は問題なく行えているのですが、セーブすることができません。

エラー

UnauthorizedAccessException: Access to the path "/var/containers/Bundle/Application/4E0B25A7-2290-4C25-A09F-7E67689E864F/com.app/Data/Raw/playerdata.json" is denied. at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.Boolean anonymous, System.IO.FileOptions options) [0x00000] in <00000000000000000000000000000000>:0 at System.IO.StreamWriter.CreateFile (System.String path, System.Boolean append, System.Boolean checkHost) [0x00000] in <00000000000000000000000000000000>:0 at System.IO.StreamWriter..ctor (System.String path, System.Boolean append, System.Text.Encoding encoding, System.Int32 bufferSize, System.Boolean checkHost) [0x00000] in <00000000000000000000000000000000>:0 at GameDirector.SavePlayerDate (PlayerDate playerdate) [0x00000] in <00000000000000000000000000000000>:0 (Filename: currently not available on il2cpp Line: -1)

Xcode上には上記のエラーが表示されています。
ファイルのアクセス権限に問題があるのかと思い、jsonファイルのアクセス権限を変更してみたのですが変化なしです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Application.streamingAssetsPathは読み込み専用なので、書き込むことは不可能です。
代わりにApplication.persistentDataPathを使ってください。

投稿2020/01/22 07:18

fiveHundred

総合スコア9803

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

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

Ponkiti27

2020/01/22 08:55 編集

Application.streamingAssetsPathをApplication.persistentDataPathに変更したら無事解決できました。 Application.streamingAssetsPathは読み込み専用なんですね。全然知らなかったです(-_-;) ありがとうございます。助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問