2017-01-30 2 views
0

Я сериализую/десериализую файлы в путь, который возвращается из 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.

+0

Вы включили разрешение на запись в манифест андроида? – Bijan

+0

Я этого не делал, но я полагал, что, поскольку сериализация/загрузка работает (даже после закрытия/повторного открытия приложения), файлы успешно создавались. Как вы думаете, мне нужно разрешение на запись для Directory.GetFiles? –

+0

см. Это сообщение: http://stackoverflow.com/a/41857019/366064 и да вам нужно разрешение – Bijan

ответ

0

Я устал от этого, поэтому решил альтернативный маршрут.

Поскольку я смог сериализовать/десериализовать файлы, я просто сериализовал список, который я собираюсь обновлять с уровнями, находящимися в настоящее время в системе. Каждый раз, когда добавляется новый уровень, имя добавляется в список и сериализуется. Всякий раз, когда уровень удаляется, имя удаляется из списка и сериализуется. Всякий раз, когда пользователь переходит на загрузку уровня, этот список заполняется в раскрывающемся списке, поэтому игрок может выбрать, какой уровень они хотят загрузить.

В любом случае, спасибо за помощь всем!

Смежные вопросы