ZIP твой прожект!

Части и запчасти к проектам, дополнительное программное обеспечение.

ZIP твой прожект!

Сообщение Neodrop 23 дек 2009, 07:53

Спасибо камраду legven за наводку : http://www.codeplex.com/DotNetZip
Отличная и бесплатная дотнет библиотека для работы с ZIP архивами. Имеет кучу функционала, но проста как улыбка ребёнка.
Я неспешно прикрутил её к своему проекту за один час. Работает как часы.

К примеру, может пригодиться для запрятывания ресурсов в паролированные архивы. Это помимо архивации, конечно.

З.Ы. Поддерживает шифрование и 64 битные алгоритмы.

(3A4OT)
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: ZIP твой прожект!

Сообщение Mr_Anderson 23 дек 2009, 08:42

Однозначно полезная вещь! Thanks ;)
Mr_Anderson
UNIт
 
Сообщения: 143
Зарегистрирован: 16 апр 2009, 13:32

Re: ZIP твой прожект!

Сообщение Piatrouski 23 дек 2009, 10:40

Твоё запароливание ничего не даст и контент-вор легко утащит весь твой контент :ymparty:
Bla-bla
Аватара пользователя
Piatrouski
UNIт
 
Сообщения: 104
Зарегистрирован: 21 мар 2009, 19:44
Откуда: Minsk, Biełaruś
  • Сайт
  • ICQ

Re: ZIP твой прожект!

Сообщение Neodrop 23 дек 2009, 11:02

Оно не моё. А 256 битный ключ устанешь ломать. :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: ZIP твой прожект!

Сообщение Neodrop 23 дек 2009, 11:09

Тем более, я никакие "секретные ресурсы" компрессить не собираюсь. Украсть можно всё и замки лишь от добрых людей.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: ZIP твой прожект!

Сообщение mp3 23 дек 2009, 11:17

С такой вещью, можно позавидовать владельцам PRO.
Be straight, or go forward.
Аватара пользователя
mp3
Адепт
 
Сообщения: 1071
Зарегистрирован: 21 окт 2009, 23:50

Re: ZIP твой прожект!

Сообщение Neodrop 23 дек 2009, 11:27

Дотнет библиотеки подключаются к любой версии [unity 3D] Unity. Достаточно просто бросить её в папку Plugins.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: ZIP твой прожект!

Сообщение Piatrouski 23 дек 2009, 11:53

Neodrop писал(а):Оно не моё. А 256 битный ключ устанешь ломать. :-?

Нео, оно распаковывает в память и сразу потоком загружается в юнити? Или создается временную папку? Вот собственно ответ на твой вопрос о взломе 234534534 битного ключа. :o)
Bla-bla
Аватара пользователя
Piatrouski
UNIт
 
Сообщения: 104
Зарегистрирован: 21 мар 2009, 19:44
Откуда: Minsk, Biełaruś
  • Сайт
  • ICQ

Re: ZIP твой прожект!

Сообщение mp3 23 дек 2009, 12:00

Neodrop писал(а):Дотнет библиотеки подключаются к любой версии [unity 3D] Unity. Достаточно просто бросить её в папку Plugins.

Тогда, огромный (3A4OT)
Be straight, or go forward.
Аватара пользователя
mp3
Адепт
 
Сообщения: 1071
Зарегистрирован: 21 окт 2009, 23:50

Re: ZIP твой прожект!

Сообщение Mr_Anderson 23 дек 2009, 14:05

Если только шифрование интересно, то можно и стандартными микрософтовскими System.Security.Cryptography (аналоги на моно не проверял!) средствами пользоваться.
Mr_Anderson
UNIт
 
Сообщения: 143
Зарегистрирован: 16 апр 2009, 13:32

Re: ZIP твой прожект!

Сообщение Neodrop 23 дек 2009, 15:26

Мне как раз удавить нужно было.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: ZIP твой прожект!

Сообщение seaman 19 июл 2011, 13:45

Сорри за некропост.
1. Вопрос по распаковке в поток.
Все бы хорошо, но вот можно ли как-то минуя создание временного файла загружать материалы (Material) из архива?
Материал можно создать из шейдера, из другого материала, а также загрузить из файла Resources.Load(путь). Как загрузить из потока я не могу сообразить. И возможно ли это вообще?
2. Можно, конечно, распаковать во временную директорию и уже оттуда грузить, но это имхо ненормально. Ну и ко всему прочему у меня и это не выходит.
Синтаксис:
Используется csharp
                        if (ext == ".zip")
                            _LoadZipMat(file, dir);
                        else if (ext == ".mat")
                            _LoadOneMat(dir, name);
...
    private static void _LoadOneMat(string dir, string name)
    {
        string f = dir + "/" + name;
        Debug.Log("Loading Mat: " + f);
        Material m = (Material)Resources.Load(f, typeof(Material));
        m.name = name;;
    }
    private static void _LoadZipMat(string file, string dir)
    {
        string path = Path.GetDirectoryName(file);
        using (ZipFile zip = ZipFile.Read(file))
        {
            foreach (ZipEntry e in zip)
            {
                e.Extract(path);
            }
        }
       
        string[] ret = Directory.GetFiles(path);
        foreach (string fil in ret)
        {
            string ext = Path.GetExtension(fil);
            string name = Path.GetFileNameWithoutExtension(fil);
            if(ext == ".zip") continue;
            if(ext != ".mat")
                Debug.LogWarning("Not supported file in Materials: " + fil);
            else
                _LoadOneMat(dir, name);
        }
    }


Материалы в конечном итоге грузятся одним методом - _LoadOneMat. Если они уже лежат в Resources/Materials, то прекрасно грузятся. Если там только архив, то распакованные то там появляются, а вот грузиться не хотят. Вылетает ошибка NullReference на строке m.name = name; Т.е. явно материал не загрузился. Причем распакованные материалы нормальные - их можно спокойно загрузить перезапустив Юнити. Т.е. получается что именно в момент попытки загрузки после распаковки что-то не то. Или их еще нет, или к ним почему-то нет доступа. Я именно поэтому сделал еще один цикл в _LoadZipMat - специально, чтобы распаковка уже точно прошла. Не помогло.
В _LoadOneMat в обоих случаях передаются одинаковые значения. Об этом четко говорит Debug.Log в ней.

В чем может быть дело?

ЗЫ: Полез я уже в File.GetAccessControl - хотел дать себе все права на файлы. Однако тут другое - Юнити пишет: в File нет такого метода, хотя VS нормально его находит, и он появился еще в DotNet 2.0! Что за фигня сегодня :( Нужно отложить все это. Потом с новыми силами браться...
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: ZIP твой прожект!

Сообщение RomanW 19 июл 2011, 16:59

seaman писал(а):Сорри за некропост.
1. Вопрос по распаковке в поток.
Все бы хорошо, но вот можно ли как-то минуя создание временного файла загружать материалы (Material) из архива?
Материал можно создать из шейдера, из другого материала, а также загрузить из файла Resources.Load(путь). Как загрузить из потока я не могу сообразить. И возможно ли это вообще?

Присоединяюсь к вопросу. Создание временных файлов не выход :(
RomanW
UNец
 
Сообщения: 7
Зарегистрирован: 29 июн 2011, 15:13

Re: ZIP твой прожект!

Сообщение DbIMok 19 июл 2011, 17:40

непонятно, почему вы решили, что можно (и нужно) зиповать материалы. это такие маленькие файлики с набором параметров и ссылкой на шейдер. зиповать имеет смысл что-то достаточно большое и хорошо сжимаемое. через Resources вы с результатом распаковки никак не поработаете. насчет временных файлов - распаковывайте в Stream.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: ZIP твой прожект!

Сообщение seaman 19 июл 2011, 19:28

насчет временных файлов - распаковывайте в Stream.

Ну и? Распаковал в стрим. Как заставить Юнити оттуда взять материал? (Если считаете, что я не могу - я оттуда спокойно (из потока) беру меши - все работает)
можно (и нужно) зиповать материалы

На счет можно не знаю. Насчет нужно - а зачем вообще эта тема? Зачем вообще зиповать? (Кстати, если не пробовали - сжимаются они очень прилично.) Ну а может я хочу их зашифровать для защиты контента? А может мне не нравится сотня маленьких файликов - я хочу один? Да мало ли для чего. Вы бы лучше подсказали - как.
через Resources вы с результатом распаковки никак не поработаете

Почему не поработаю? Распаковал в папку Resources. Файл там лежит после распаковки. По идее - что мешает оттуда взять? Вот я не понимаю - почему нельзя сразу взять? Почему после повторного запуска игры те же самые распакованные при предыдущем запуске файлы спокойно берутся? Одна мысль - нет прав. Тогда вопрос - как установить права?
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

След.

Вернуться в Компоненты (Копилка)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7