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

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

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

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

Unity

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

Q&A

解決済

1回答

1314閲覧

Unityで作ったexe,APKでCSVの書き込み、読み込みをしたい

Note1925

総合スコア13

C#

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

Unity

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

0グッド

0クリップ

投稿2019/01/30 05:55

前提・実現したいこと

プログラム初心者でわからないことの方が多いのでお手柔らかにお願いします

今UnityでゲームのセーブデータをCSVで管理していて
キャラクターのパラメーターやアイテムのIDの情報を持たせているのですが
どうもexeやAPKにするとロードやセーブが出来ないことがわかりました
多分exeにするとロードするファイルがわからなくなるのかな~って思ってるのですが
解決方法がわからないので質問させてもらいました

やりたいこととしては
・CSVで値を管理してセーブ、ロードをができるようにしたい

Unityの機能でセーブデータ作れよっていう返答はなしでお願いします

発生している問題

出力するとセーブ,ロードが出来ない

該当のソースコード

C#

1ソースコード 2書き込み 3 StreamWriter sw = new StreamWriter(@"Assets/Scene/All/SaveSlot/saveData.csv", false, Encoding.GetEncoding("Shift_JIS")); 4 5 色々情報を変数に入れる作業 6 7 string str2 = string.Join(",", str); 8 sw.WriteLine(str2); 9 sw.Flush(); 10 sw.Close(); 11 12読み込み 13 StreamReader sr = new StreamReader(Application.dataPath + "/saveData.csv"); 14 15 while (sr.Peek() >= 0) 16 { 17 string line = sr.ReadLine(); 18 string[] values = line.Split(','); 19 csvDatas.Add(values); 20 } 21 sr.Close(); 22 23データをゲームのパラメーターに入れる作業

試したこと

最初はリソースロードでやってたので
データのロードは出来たのですがセーブは出来なかったし
正しい使い方ではないと知ったのでやめました

補足情報(FW/ツールのバージョンなど)

Unity 2018 2.6f.1

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

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

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

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

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

sakura_hana

2019/01/30 06:05

ファイルのパス(位置)指定の問題だと思います。(Androidはもうひと工夫いるかも) 「unity 外部ファイル パス」「unity csv 読み込み 書き込み android」「unity csv 読み込み 書き込み exe」などで検索してみてください。 (解決しない場合は別の要因かもしれないので出ているエラーコードを追記してください。実機でのエラーコードの出し方は適宜調べてください)
guest

回答1

0

ベストアンサー

sakura_hanaさんの言う通り、パスの問題だと思います。
ビルドしたexeやapkには、そもそもAssetsディレクトリは存在しないため、読み書きをすることは不可能です。

ファイルの書き込みを行う場合は、Application.persistentDataPathに書き込みを行ってください。
ファイルの読み込みについても、そのパスに行う分にはWindowsでもAndroidでも問題なく行えるはずです。


今回のケースとは無関係だと思いますが、「セーブファイルではなく、あらかじめ用意したファイルを読み込みたい」場合は、ResourcesかStreamingAssetsディレクトリに格納して、それを読み込む形になります。
ただ、後者の場合はWindowsとAndroidでやり方が違うので、その点は注意してください。
また、いずれも書き込みは行えないので、その場合はApplication.persistentDataPathを使いましょう。

投稿2019/01/30 07:31

fiveHundred

総合スコア9796

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

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

Note1925

2019/02/04 00:34

無事に出来ました! resourceの話もしてくれてありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問