Страница 1 из 1

Как добавить двоичный файл в проект и далее в apk?

СообщениеДобавлено: 07 ноя 2018, 10:49
crr
Собсно сабж. Предыстория такова что вся игровая информация: карты, бонусы и пр., также сохранения (данные: ~8 мб цифр и текста, почти всё - массивы) из класса - синглтона посредством бинарной сериализации льются в файл с названием "GameData" лежащий в корне проекта. При сборке под ПК такой подход прокатывал, файл читался/писался без проблем. Однако после сборки апк игра не запустилась ввиду отсутствия сего файла. То есть мне надо либо понять как уговорить юнити добавить этот файл в проект, либо хранить данные каким-то другим способом. Прошу подсказать или пнуть в правильном направлении.

Re: Как добавить двоичный файл в проект и далее в apk?

СообщениеДобавлено: 07 ноя 2018, 16:52
DbIMok
варианта 2:
1. TextAsset (.bytes) https://docs.unity3d.com/Manual/class-TextAsset.html и грузить по ссылке в сцене (она потяжелеет) или через Resources
2. StreamingAssets https://docs.unity3d.com/Manual/StreamingAssets.html и грузить через WWW/UnityWebRequest (пусть названия классов не вводят в заблуждение, это локально)

Re: Как добавить двоичный файл в проект и далее в apk?

СообщениеДобавлено: 08 ноя 2018, 10:00
crr
Спасибо, выбрал второй вариант, файл положил в StreamingAssets, проект его подцепил, что видно по увеличившемуся размеру apk, галку чтения с sdcard в свойствах выставил, т.е. приложение при первом запуске начало запрашивать доступ к фс.

Конструкция получилась такая:
Синтаксис:
Используется csharp
WWW loadGD = new WWW (Application.streamingAssetsPath+"/GameData");
File.WriteAllBytes (Application.persistentDataPath + "/GameData", loadGD.bytes);
 


Однако файл на выходе создается нулевой длины, хотя пробовал после File.WriteAllBytes смотреть значения loadGD.progress и loadGD.bytesDownloaded, прогресс равен 1 и размер скачанного равен размеру файла, т.е. проблема где-то в записи на диск или я как-то криво использовал File.WriteAllBytes

Re: Как добавить двоичный файл в проект и далее в apk?

СообщениеДобавлено: 08 ноя 2018, 10:18
crr
Проверю только вечером, но судя по https://stackoverflow.com/questions/42453989/file-writeallbytes-is-creating-a-0-byte-file и https://answers.unity.com/questions/52268/saving-local-data-through-www.html, надо завернуть загрузку в корутину и вызывать уже ее.
Прошу прощения за донный характер вопроса)