Войти
Мобильные платформыФорумОбщее

Unity 2D игра. Оптимизация под мобильники

#0
15:29, 24 июня 2016

Всем привет! Я начинающий разработчик, пишу игру (по сложности примерно как cut the rope) на android и ios. Хотел узнать, есть ли в юнити какие нибудь настройки для увеличения производительности именно на телефонах? Я использую плагин 2d toolkit, много читал про оптимизацию 2д игр, не использую скейл объектов, пости не использую методы instantiate и destroy. Но игра весит неоправданно много и лагает немного, хотя в эдиторе фпс под 2500. Может как то можно пожать ассеты или отключить ненужные функции? В коде ничего сложного нет,  единственное, передвижение по X идет в FixedUpdate() методом Translate(); И при этом Update() тоже присутствует. Может я сделал слишком большие текстурные атласы(2к на 2к) и изза того что они в памяти, виснет?
И еще пару вопросов:
Дорога ли функция смены гаммы цветов спрайта в рантайме?
Какие еще способы сделать анимацию в 2д, кроме спрайтовой? (например анимацию заморозки экрана)

Буду очень благодарен за советы)


#1
15:54, 24 июня 2016

чаще всего нагрузку помоему создает интерфейс, как реализован?Rustam789
> Какие еще способы сделать анимацию в 2д, кроме спрайтовой? (например анимацию
> заморозки экрана)
шейдером, процедурная. но большинство процедурной может ещё большую нагрузку создать. простая процедурная на основе выборки из текстур может быть более менее оптимальна и прилично выглядеть

#2
16:34, 24 июня 2016

Chupakaber
UI в геймплейной сцене почти отсутствует, только 3 кнопки для эффектов типо суперспособностей, он сделаны опять таки через плагин, там есть свой UI. Канвасы вообще не используются. Еще проблема, я раньше, без плагина текстуры в ргб24 сжимал, а в плагине либо труколор, либо компрессд. Но без плагина не смогу никак(
Уверен, если бы писал на жаве, на фреймворке каком нибудь, все бы летало на любых телефонах)) но есть же много игр на юнити, которые хоть и весят в 1.5 раза больше, чем могли бы, но не лагают совсем

#3
12:54, 26 июня 2016

Как вариант - посмотреть что у тебя с new в циклах update / ongui / ... , возможно ты создаешь много новых обьектов и GC тормозит игру когда чистит.
Но вообще unity по определению иногда подлагивает

Прошло более 1 года
#4
12:53, 4 апр. 2018

Rustam789
> Дорога ли функция смены гаммы цветов спрайта в рантайме?

Чой это такое, можно на пальцах?

> единственное, передвижение по X идет в FixedUpdate() методом Translate(); И при этом Update() тоже присутствует

Ну а что нам разработчики от Unity советуют?
В Fixed считается только физика. В Update все остальное, включая обработку клавиш и timers.

Кстати да. В игре от физики translate неправильно используешь (двигать надо применяя force). Вот это может быть проблемой, у меня такое было в старой игре от 2011 года. Если двигаешь translate, физика переинициализируется (которая "статическая") вся каждый кадр и все "фризится". Но это сразу неправильный подход к физическим играм.

> Может я сделал слишком большие текстурные атласы(2к на 2к) и изза того что они
> в памяти, виснет?

Разве что тестить на доисторическом железе образца 2012 года. В остальных атласы по 2к должны поддерживаться.
Единственное, может быть у тебя все в память не влезает и сводиться, но тогда фризы были бы всегда.

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

Скорее всего, либо у тебя ДОФИГА объектов на экране, и поэтому всё на телефоне медленно.
Либо проблема в другом месте.

#5
14:23, 4 апр. 2018

А смотрели сколько Draw Calls. После сборки в логе есть список какие ресурсы загружены и сколько они занимают.

#6
11:15, 10 апр. 2018

Наверное стоит начать с профайлера, там довольно много информации можно получить. Причем профилировать стоит сразу на девайсе, минуя редактор.
https://docs.unity3d.com/ru/current/Manual/Profiler.html

Мобильные платформыФорумОбщее

Тема в архиве.