Я сериализую/десериализую файлы в путь, который возвращается из Application.persistentDataPath для сохранения/загрузки уровней, созданных игроком, и работает безупречно. Однако, когда я пытаюсь получить доступ к тому же пути через Directory.GetFiles() я получаю возвращается значение 0.Доступ к определенному местоположению на устройстве Android с помощью кода
Вот как я спасаю:
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 я заметил, что путь он возвращается на самом деле не существует на мобильном устройстве. У этого есть некоторые странные поведения, хотя, как будто я пытаюсь создать папку, которая завершит этот путь, мое устройство просто не позволит мне, но если я попытаюсь назвать папку что-нибудь еще, то это работает отлично.
Есть ли другая библиотека, которая мне нужна для доступа к файлам на устройстве Android от Unity? Directory.GetFiles() отлично работает при работе в Windows.
Вы включили разрешение на запись в манифест андроида? – Bijan
Я этого не делал, но я полагал, что, поскольку сериализация/загрузка работает (даже после закрытия/повторного открытия приложения), файлы успешно создавались. Как вы думаете, мне нужно разрешение на запись для Directory.GetFiles? –
см. Это сообщение: http://stackoverflow.com/a/41857019/366064 и да вам нужно разрешение – Bijan