Как создать в билде отдельную папку?

Объясняю ситуацию, делаю ритм игру , в игре например 5 карт ,тобишь 5 папок с музыкой,бэкграундом,текстом песни,таймингами для карты должно выглядеть примерно так:

Папка с картами\Карта_1\(и тут файлы) музыка.mp3,текст.txt,бэкграунд.png

И уже из этой папки Карта_1 я в юнити считываю музыку текст картинку на фон. Если в едиторе я могу всё это загружать в Resources ,то в билде мне нужно как то создать отдельную папку и туда например загрузить по шаблону свои карты для прохождения.

Если не сложно хотелось бы попросить, узнать как вообще например мне обращаться в коде к этой папке если получить всё таки её создать в билде,что бы оттуда инфу брать.

У всех же разные пути на компе.

введите сюда описание изображения


Ответы (2 шт):

Автор решения: aepot

Если речь только о Windows, то Application.dataPath может помочь.

string rootPath = Path.Combine(Application.dataPath, "..");

Дальше можно создать папку как на вашем скриншоте.

string mapsPath = Path.Combine(rootPath, "UserMaps");
Directory.CreateDirectory(mapsPath);

И так далее по образу и подобию можно создать нужное дерево каталогов.

Либо в качестве папки для записи данных на любой платформе, рекомендуют использовать Application.persistentDataPath, она как раз и предназначена для сохранения данных.

→ Ссылка
Автор решения: Yaroslav

Вопрос не только Как?, но и Где?.


Касаемо Где?, поскольку в разных OS, разные права доступа, которые ограничены и имеются директории, предназначенные для хранения данных.

  • Windows: C:/Users/<UserName>/AppData/LocalLow/<AppName>
  • Adroid: <Storage>/Android/Data/<AppIdentifire>/files
  • ...

Для этого в Unity3D есть Application.persistentDataPath.


А на тему Как?, поможет C#, позволяющий создать / удалить / проверить существование папки или файла.

Однако например в Android всё строже, за рамками отведённого места без полученного от пользователя разрешения на чтение / запись, не сунешься. Для скачивания и загрузки файлов, нужно использовать DownloadHandler и UploadHandler, но проверить существование, можно с помощью всё того-же File.Exists(path).

→ Ссылка