Комментарии 10
1) Синглтоны для сцены.
Когда вы открываете новую сцену, грузите ресурсы. Когда открываете другую, то dispose'ите все ресурсы старой. И не будет никакой проблемы с gc.
2) Libgdx и 2D графика.
Тоже столкнулся с этой проблемой. В итоге решил весь интерфейс делать обычными спрайтами и обрабатывать нажатия по ним ручками.
p.s. урежьте изображения в статье пожалуйста
Когда вы открываете новую сцену, грузите ресурсы. Когда открываете другую, то dispose'ите все ресурсы старой. И не будет никакой проблемы с gc.
2) Libgdx и 2D графика.
Тоже столкнулся с этой проблемой. В итоге решил весь интерфейс делать обычными спрайтами и обрабатывать нажатия по ним ручками.
p.s. урежьте изображения в статье пожалуйста
+1
Мы вначале тоже сделали спрайтами и обрабатывали клики. Проблема была, когда нужно было подверстать/изменить расположение каких-то элементов. В итоге получали много скучной работы по верстке.
Сейчас уменьшу, спасибо!
Сейчас уменьшу, спасибо!
0
C gc есть еще такой прикол: не используйте foreach по коллекциям вообще. При каждом таком fore создается объект итератора, и в итоге это примерно по 60 новых объектов в секунду(при fps 60) на каждый for. Естественно за ними потом сборщик мусора приходит.
0
Занимательно, а есть ли примеры по работе с 3Д моделями в libgdx? Прошерстил множество ссылок, но везде лишь про 2д.
0
За пулы обьектов. Как я вижу, вы используете свой велосипед. В LibGDX есть свой удобный класс для пулов (Pool), и есть пул пулов (Pools). В итоге, работа сводится к:
Monster m = Pools.obtain(Monster.class); //получить обьект из пула. Просто указываем, какого класса обьект нам нужен
… // попользовались обьектом
Pools.free(m); //вернули обьект в пул
За интерфейс. Да, делать руками его печально :) Сейчас я допиливаю свой редактор интерфейсов для LibGDX. Сейчас занимаюсь интеграцией его в LibGDX Setup-UI. Как допилю, напишу про него подробней
Monster m = Pools.obtain(Monster.class); //получить обьект из пула. Просто указываем, какого класса обьект нам нужен
… // попользовались обьектом
Pools.free(m); //вернули обьект в пул
За интерфейс. Да, делать руками его печально :) Сейчас я допиливаю свой редактор интерфейсов для LibGDX. Сейчас занимаюсь интеграцией его в LibGDX Setup-UI. Как допилю, напишу про него подробней
+1
А в каких единицах измеряется сложность на графике?
0
Простите за возможно глупый вопрос, но:
вы для новой игры создаете каждый раз новый скрин? О__о
Просто Цехнер ведь исповедует идею «несоздания» новых объектов, а повторное использование старых.
А за статью спасибо!
вы для новой игры создаете каждый раз новый скрин? О__о
Процесс мог быть такой: Новая игра -> возрождение -> возрождение -> начать сначала -> возрождение -> начать сначала.
Здесь начинались проблемы с памятью, начинал включаться GC, иногда встречались с тем, что некоторые объекты ссылались на уже убитый скрин.
Просто Цехнер ведь исповедует идею «несоздания» новых объектов, а повторное использование старых.
А за статью спасибо!
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Казуальные игры на Libgdx, тонкие моменты в разработке