Распаковка zip архива в Unity3D

Приветствую! Опишу свой опыт работы с zip архивами. На первый взгляд, казалось, тривиальнейшная задача. Андроид завелся мигом, а вот iOS(il2cpp) сразу выдал ошибки. Поэтому если хотите сэкономить пару часов разработки, внимайте:)

Задача — распаковать 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"));
...


Итог — умеем распаковывать зипки)