Как стать автором
Обновить

Комментарии 10

1) Синглтоны для сцены.
Когда вы открываете новую сцену, грузите ресурсы. Когда открываете другую, то dispose'ите все ресурсы старой. И не будет никакой проблемы с gc.
2) Libgdx и 2D графика.
Тоже столкнулся с этой проблемой. В итоге решил весь интерфейс делать обычными спрайтами и обрабатывать нажатия по ним ручками.

p.s. урежьте изображения в статье пожалуйста
Мы вначале тоже сделали спрайтами и обрабатывали клики. Проблема была, когда нужно было подверстать/изменить расположение каких-то элементов. В итоге получали много скучной работы по верстке.
Сейчас уменьшу, спасибо!
Согласен, в случае изменения вёрстки/расположения приходится много чего менять. Немного улучшает ситуацию использование относительных размеров.
C gc есть еще такой прикол: не используйте foreach по коллекциям вообще. При каждом таком fore создается объект итератора, и в итоге это примерно по 60 новых объектов в секунду(при fps 60) на каждый for. Естественно за ними потом сборщик мусора приходит.
Занимательно, а есть ли примеры по работе с 3Д моделями в libgdx? Прошерстил множество ссылок, но везде лишь про 2д.
За пулы обьектов. Как я вижу, вы используете свой велосипед. В LibGDX есть свой удобный класс для пулов (Pool), и есть пул пулов (Pools). В итоге, работа сводится к:

Monster m = Pools.obtain(Monster.class); //получить обьект из пула. Просто указываем, какого класса обьект нам нужен
… // попользовались обьектом
Pools.free(m); //вернули обьект в пул

За интерфейс. Да, делать руками его печально :) Сейчас я допиливаю свой редактор интерфейсов для LibGDX. Сейчас занимаюсь интеграцией его в LibGDX Setup-UI. Как допилю, напишу про него подробней
За пулы спасибо, добавлю в описание!
Посмотрите ссылку на гитхаб, может будет полезно =)
А в каких единицах измеряется сложность на графике?
Простите за возможно глупый вопрос, но:
вы для новой игры создаете каждый раз новый скрин? О__о
Процесс мог быть такой: Новая игра -> возрождение -> возрождение -> начать сначала -> возрождение -> начать сначала.

Здесь начинались проблемы с памятью, начинал включаться GC, иногда встречались с тем, что некоторые объекты ссылались на уже убитый скрин.

Просто Цехнер ведь исповедует идею «несоздания» новых объектов, а повторное использование старых.

А за статью спасибо!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории