Среда, 21 Февраля 2018, 17:54

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Страница 1 из 11
Модератор форума: beril 
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Help: использование в игре большого кол-ва текстур
Help: использование в игре большого кол-ва текстур
zhuravelsvДата: Пятница, 05 Января 2018, 21:48 | Сообщение # 1
частый гость
Сейчас нет на сайте
Добрый день, нужна помощь в решении проблемы, проблема:
В игре есть большое количество изображений, они нужны для покадровой анимации, размер примерно 30кб каждое (1000х600 пикселей +-).
Изначально планировал загружать их все сразу в память с помощью Resource.Load, но получается что они в памяти занимают около 4х гб!!, что просто очень плохо, так как игра для андроид и на диске они занимают всего 80 МБ, при этом их загрузка происходит так же ооочень долго, не подскажете что можно сделать для того что бы это нормально работало и не занимало настолько много памяти?
в Preloaded Assets добавил папку resources целиком, думал что поможет быстрее грузить всё, но нет. Количество изображений: около 3.5к, хотя даже при загрузке пары сотен уже долго жду (секунд 10)

Добавлено (05 января 2018, 21:40)
---------------------------------------------
загружаю вот так

Код

        Texture2D texture = Get<Texture2D>(string.Concat("Textures/", name));
        return Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));

Добавлено (05 января 2018, 21:41)
---------------------------------------------
Возможно нужно удалять из памяти Texture2D, пробовал просто не создавать спрайт а возвращать null, не помогло

Добавлено (05 января 2018, 21:48)
---------------------------------------------
если вместо texture2d загружать sprite то работает быстрее, но опять слишком много памяти занимает



Разработка программного обеспечения для ОС Windows и Android, клиент-серверные, облачные приложения, работа с БД и многое другое - https://www.weblancer.net/users/zhuravelsv/

Сообщение отредактировал zhuravelsv - Пятница, 05 Января 2018, 21:38
RutrapleДата: Пятница, 05 Января 2018, 22:53 | Сообщение # 2
почетный гость
Сейчас нет на сайте
Цитата
не подскажете что можно сделать для того что бы это нормально работало и не занимало настолько много памяти?

Зачем тебе сразу столько текстур в кадре? Иначе непонятно для чего ты их все в память сразу загружаешь. Загружай и выгружай по мере использования

Цитата
они нужны для покадровой анимации

Если на листе с анимацией 5 кадров, а одна анимация на 10 листов, например, то это плохая идея, тем более для мобилок, с учетом того что у тебя, например, больше 100 разных объектов в кадре (при таком размере атласов с анимацией)

Плюс глянь на сжатие текстур, если оно не поддерживается android, то может иметь место двойная распаковка в память (сжатые сохранятся вместе с разжатыми), считай x2 затрат памяти на все текстуры.


After Time
Last Of Time
Happy Pumpkin
Портфолио Художника
zhuravelsvДата: Пятница, 05 Января 2018, 23:07 | Сообщение # 3
частый гость
Сейчас нет на сайте
Цитата Rutraple ()
Зачем тебе сразу столько текстур в кадре? Иначе непонятно для чего ты их все в память сразу загружаешь. Загружай и выгружай по мере использования

В кадре все конечно не использую, но как я писал выше они долго подгружаются, у меня на один обьект 75 кадров, одновременных анимаций - сейчас одна (пару дней назад было около 20, заказчик решил немного изменить их показ, но не факт что он не передумает, то есть должен загружать сразу штук 20 обьектом)

Добавлено (05 января 2018, 23:01)
---------------------------------------------

Цитата Rutraple ()
Плюс глянь на сжатие текстур, если оно не поддерживается android, то может иметь место двойная распаковка в память (сжатые сохранятся вместе с разжатыми), считай x2 затрат памяти на все текстуры.

Это у меня на ПК прям в редакторе всё так печально (4гб и долгая подгрузка), на андроиде забивает 2гб ОЗУ и крашится

Добавлено (05 января 2018, 23:07)
---------------------------------------------
Попробую в атласы всё запихнуть, но если вдруг кто-то имеет ещё идеи и предположения просьба написать сюда


Разработка программного обеспечения для ОС Windows и Android, клиент-серверные, облачные приложения, работа с БД и многое другое - https://www.weblancer.net/users/zhuravelsv/
GMasstaДата: Суббота, 06 Января 2018, 00:29 | Сообщение # 4
был не раз
Сейчас нет на сайте
Цитата
но как я писал выше они долго подгружаются, у меня на один обьект 75 кадров


Андроид весьма неплохо работает с потоками. Я писал себе кэш, который загружал, выгружал графику, звуки, музыку и фпс сохранялся стабильно, даже при постоянных загрузках/выгрузках.

Цитата
Попробую в атласы всё запихнуть


с этого надо начинать в первую очередь.
zhuravelsvДата: Суббота, 06 Января 2018, 00:45 | Сообщение # 5
частый гость
Сейчас нет на сайте
Цитата GMassta ()
с этого надо начинать в первую очередь.

Это частично решило проблему, загрузка намного быстрее, хотя далеко не идеально, и памяти теперь использует не 4гб а 1, теперь подумаю над загрузкой не всего сразу а частично только то что нужно в текущий момент


Разработка программного обеспечения для ОС Windows и Android, клиент-серверные, облачные приложения, работа с БД и многое другое - https://www.weblancer.net/users/zhuravelsv/
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Help: использование в игре большого кол-ва текстур
Страница 1 из 11
Поиск:

Все права сохранены. GcUp.ru © 2008-2018 Рейтинг