2017-01-30 4 views
0

私は、Application.persistentDataPathから返されたパスにファイルをシリアライズ/デシリアライズして、プレーヤーによって作成されたレベルを保存/ロードしています。コードを使用してAndroidデバイスの特定の場所にアクセスする

using (Stream stream = new FileStream(Application.persistentDataPath + @"\" + name + ".LevelData", FileMode.Create, FileAccess.Write, FileShare.None)) 
{ 
    formatter.Serialize(stream, level); 
} 

私はこれにアクセスしようとしている理由:しかし、私はDirectory.GetFiles経由で同じパスにアクセスしようとすると、()私がここで0

の値は、私が保存していますどのように返されます場所は、プレイヤーにどのレベルをロードしたいのかを尋ねるメニューポップアップを持つことができるようになっており、作成したすべてのレベルが表示され、選択して編集できるようになります。

これは大きさゼロの文字列配列を返します。

また
Directory.GetFiles(Application.persistentDataPath, "*LevelData", SearchOption.TopDirectoryOnly); 

を、Application.persistentDataPathから返されるパスをデバッグした後、私はそれが返すパスは実際に私のモバイルデバイス上に存在していないことに気づきました。そのパスを完成させるフォルダを作成しようとするように、私のデバイスは単に私に許可しませんが、フォルダに何か他の名前を付けるとうまくいきます。

UnityからAndroidデバイスのファイルにアクセスするために必要なライブラリはありますか? Directory.GetFiles()は、Windowsで作業するときに正常に動作します。

+0

あなたはAndroidマニフェストに書き込み権限を含めましたか? – Bijan

+0

私はしませんでしたが、私は、ファイルが正常に作成されていることを前提としていました。 Directory.GetFilesの書き込み権限が必要だと思いますか? –

+0

この投稿を参照してください:http://stackoverflow.com/a/41857019/366064そして許可が必要です – Bijan

答えて

0

私はこれにうんざりしていたので、別のルートを決めました。

ファイルをシリアライズ/デシリアライズできたので、現在システム内のレベルを最新の状態に保つためにリストをシリアライズしました。新しいレベルが追加されるたびに、その名前がリストに追加されてシリアル化されます。レベルが削除されると、その名前はリストから削除され、シリアライズされます。ユーザーがレベルをロードするたびに、このリストがドロップダウンに入力され、プレイヤーはロードするレベルを選択できます。

とにかく助けてくれてありがとう!

関連する問題