Распаковка zip архива в Unity3D
Приветствую! Опишу свой опыт работы с zip архивами. На первый взгляд, казалось, тривиальнейшная задача. Андроид завелся мигом, а вот iOS(il2cpp) сразу выдал ошибки. Поэтому если хотите сэкономить пару часов разработки, внимайте:)
Задача — распаковать zip архив
1. Инструмент — github.com/r2d2rigo/dotnetzip-for-unity (PC,Android,iOS)
Однако, мне не удалось нормально собрать либу, и один товарищ помог с этим, за что ему большое спасибо! Рекомендую скачать dll файл вот тут(прямая ссылка).
2. Кладем dll файл в папку Assets\Plugins\
3. Обертка над либой:
4. Теперь можно распаковывать:
Итог — умеем распаковывать зипки)
Задача — распаковать zip архив
Приступим
1. Инструмент — github.com/r2d2rigo/dotnetzip-for-unity (PC,Android,iOS)
Однако, мне не удалось нормально собрать либу, и один товарищ помог с этим, за что ему большое спасибо! Рекомендую скачать dll файл вот тут(прямая ссылка).
2. Кладем dll файл в папку Assets\Plugins\
3. Обертка над либой:
public static void Unpack(string zipfilePath, string location)
{
// создаем папку куда будем распаковывать
Directory.CreateDirectory(location);
//распаковываем зип файл и начинаем читать файлы
using (ZipFile zip = ZipFile.Read(zipfilePath))
{
var z = zip.GetEnumerator();
while (z.MoveNext())
{
var t = z.Current;
if (t == null)
continue;
var path = location + "/" + t.FileName.Replace("\\", "/");
using (FileStream s = File.Create(path))
{
t.Extract(s);
}
}
}
}
4. Теперь можно распаковывать:
...
Unpack(Path.Combine(Application.persistentDataPath,"myArchive.zip"),Path.Combine(Application.persistentDataPath,"outputDir"));
...
Итог — умеем распаковывать зипки)
5 комментариев