通过代码访问Android设备上的特定位置

时间:2017-01-30 06:37:21

标签: c# android unity3d

我将文件序列化/反序列化为从Application.persistentDataPath返回的路径,以保存/加载由播放器创建的级别,并且它可以正常工作。但是,当我尝试通过Directory.GetFiles()访问相同的路径时,我返回值为0.

以下是我的保存方式:

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

我试图访问此位置的原因是我可以弹出一个菜单,询问玩家他们想要加载哪个级别,然后它会显示他们创建的每个级别,以便他们可以选择它编辑它。

返回大小为零的字符串数组:

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

此外,在调试从Application.persistentDataPath返回的路径后,我注意到它返回的路径实际上并不存在于我的移动设备上。它有一些奇怪的行为,好像我试图创建完成该路径的文件夹,我的设备根本不会让我,但如果我尝试将文件夹命名为其他任何其他工作正常。

为了从Unity访问Android设备上的文件,我需要一个不同的库吗?在Windows上工作时,Directory.GetFiles()工作正常。

1 个答案:

答案 0 :(得分:0)

我厌倦了这个,所以我决定了另一条路线。

由于我能够序列化/反序列化文件,我只是序列化了一个List,我将跟上系统中当前的级别。每次添加新级别时,名称都会添加到列表中并序列化。每当删除一个级别时,该名称将从列表中删除并序列化。每当用户加载一个级别时,该列表将填充到下拉列表中,以便玩家可以选择他们想要加载的级别。

无论如何,感谢大家的帮助!

相关问题