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

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

ただいまの
回答率

89.53%

Xcodeでcsvデータが見つからない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,590

agu

score 22

開発中のゲームでcsvデータを使っています。
UnityでビルドしてXcodeでシミュレートすると起動はできるのですが、csvを読みこむ所で止まってしまいます。
csvのassetbundleはnoneでビルドしているので、全てビルド中に含まれている認識なのですが、
なんらかの手順がたりていないのでしょうか?

現在持っている書籍や検索ではヒントを見つけることが出来ず困っています。
どなたかヒントだけでもいただけますとありがたいです。どうかよろしくお願いします。

◆停止までのxcodeのログです↓
ログそのままで申し訳ありません。
IsolatedStorageExceptionの部分が問題の箇所かと思っているのですが、手順が誤っているかも。と思っているので省略するべきでないと考え全て記載させていただきます。

2017-05-13 07:22:45.397183+0900 Xxxxxxx[260:25691] [DYMTLInitPlatform] platform initialization successful

2017-05-13 07:22:45.537801+0900 Xxxxxxx[260:25514] -> registered mono modules 0x101118c10
2017-05-13 07:22:46.543763+0900 Xxxxxxx[260:25514] You've implemented -[<UIApplicationDelegate> application:didReceiveRemoteNotification:fetchCompletionHandler:], but you still need to add "remote-notification" to the list of your supported UIBackgroundModes in your Info.plist.
-> applicationDidFinishLaunching()
PlayerConnection initialized from /var/containers/Bundle/Application/770A9792-CAF7-42BB-B8F4-D028C4D1C188/Xxxxxxx.app/Data (debug = 0)
PlayerConnection initialized network socket : 0.0.0.0 55000
Multi-casting "[IP] 192.168.0.6 [Port] 55000 [Flags] 3 [Guid] 4012568094 [EditorId] 2061942143 [Version] 1048832 [Id] iPhonePlayer(iPhone4S-iOS7-Yousuke):56000 [Debug] 1" to [225.0.0.222:54997]...
Waiting for connection from host on [0.0.0.0:55000]...
PlayerConnection accepted from [192.168.0.4] handle:0x6
Started listening to [0.0.0.0:55000]
Player data archive not found at /var/containers/Bundle/Application/770A9792-CAF7-42BB-B8F4-D028C4D1C188/Xxxxxxx.app/Data/data.unity3d, using local filesystem2017-05-13 07:22:47.069687+0900 Xxxxxxx[260:25514] Metal GPU Frame Capture Enabled
2017-05-13 07:22:47.070640+0900 Xxxxxxx[260:25514] Metal API Validation Disabled
2017-05-13 07:22:47.157438+0900 Xxxxxxx[260:25514] libMobileGestalt MobileGestaltSupport.m:153: pid 260 (Xxxxxxx) does not have sandbox access for frZQaeyWLUvLjeuEK43hmg and IS NOT appropriately entitled
2017-05-13 07:22:47.157579+0900 Xxxxxxx[260:25514] libMobileGestalt MobileGestalt.c:550: no access to InverseDeviceID (see <rdar://problem/11744455>)
-> applicationDidBecomeActive()
GfxDevice: creating device client; threaded=1
Initializing Metal device caps: Apple A8 GPU
Initialize engine version: 5.6.0f3 (497a0f351392)
UnloadTime: 7.964333 ms
Setting up 1 worker threads for Enlighten.
Thread -> id: 16f4af000 -> priority: 1
DataIn
StartUp:DataIn()
$:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
System.Collections.Generic.Comparer1:Compare(T, T) System.Collections.Generic.Comparer1:Compare(T, T)
System.Collections.Generic.Comparer`1:Compare(T, T) (Filename: /Users/builduser/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)

IsolatedStorageException: Could not find file "/var/containers/Bundle/Application/770A9792-CAF7-42BB-B8F4-D028C4D1C188/Xxxxxxx.app/Data/Resources/Data\CoursePattern.csv".   at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) [0x00000] in <filename unknown>:0   at System.IO.File.OpenRead (System.String path) [0x00000] in <filename unknown>:0   at System.IO.StreamReader..ctor (System.String path, System.Text.Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize) [0x00000] in <filename unknown>:0   at StartUp.CouseDataIn () [0x00000] in <filename unknown>:0   at StartUp.DataIn () [0x00000] in <filename unknown>:0   at StartUp+$Start$189+$.MoveNext () [0x00000] in <filename unknown>:0   at UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress) [0x00000] in <filename unknown>:0   at System.Collections.Generic.Comparer1[T].Compare (.T x, .T y) [0x00000] in <filename unknown>:0
at System.Collections.Generic.Comparer
1[T].Compare (.T x, .T y) [0x00000] in <filename unknown>:0   at System.Collections.Generic.Comparer1[T].Compare (.T x, .T y) [0x00000] in <filename unknown>:0
System.Collections.Generic.Comparer
1:Compare(T, T) System.Collections.Generic.Comparer1:Compare(T, T)
System.Collections.Generic.Comparer
1:Compare(T, T)
(Filename: currently not available on il2cpp Line: -1)

◆読込みまでのソースコードは下記のようになっており、問題が発生するシーンのゲームオブジェクトにアタッチしてあります。

pragma strict

import UnityEngine.SceneManagement;
import System.IO;
import System.Collections.Generic;
//データ読込み準備-----------------------
var sr : StreamReader;
var fileName : String;
//--------------------------------------------
function Start () {
DataIn();
}

function Update () {
}

function DataIn(){
CouseDataIn();
}

function CouseDataIn(){
//Debug.Log("couseTest");
fileName = "/Resources/Data\\CoursePattern.csv";
sr = new StreamReader(Application.dataPath + fileName,true);
var txt = sr.ReadToEnd();
sr.Close();
}

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • sakura_hana

    2017/05/13 13:18

    ファイルパスの指定が間違っているような気がします(「/」と「\」が混在しているので)。ファイル読み込み部分のソースコードを提示頂けますか?

    キャンセル

  • agu

    2017/05/14 10:51

    ありがとうございます!ご返答が遅くなり申し訳ありません。ソースコードの追記を行わせていただきました。JS(UnityScript)となりますが宜しくお願いします。

    キャンセル

回答 1

checkベストアンサー

0

Assets以下のフォルダ(Projectタブ内に見えているファイル)は、ビルド時に圧縮されるのでそのままのフォルダ構成になりません。
Resourcesフォルダがそもそも存在しないことになるのでパスも違うことになります。
(Unityエディタ上では圧縮が行われていないので正常に動作します)

Resourcesフォルダの中にあるなら、CSVをTextAssetとして取り扱えばResources.Loadで読み出せます。
参考:Unityにテキストファイルを取り込んでスクリプトから読み込む-Unityを使った3Dゲームの作り方(かめくめ)

もしくは、外部ファイルとして取り扱う(StreamingAssetsフォルダに入れる等)ことも出来ます。
ただしその場合、アプリ外からファイルを弄れる可能性が出て来ますので(特にAndroid)暗号化等が必要になります。
この辺りは「Unity 外部ファイル」で調べると色々情報が出て来ると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/16 06:25

    ご返答頂きありがとうございました!
    教えて頂いたサイトを参考にしてみたらうまく実装できました!
    ResourcesLoadでの読込みは過去に失敗してストリームリーダーで実装していたのですが、おそらくResouresLoadのtype指定でミスをしていたのだと思います。
    外部ファイルという手段もあるのですね。リソースのロードに関して非常に勉強になりました!
    今後も頑張って勉強させていただきます!ありがとうございます!!

    キャンセル

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

  • ただいまの回答率 89.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる