Включают ли разработчики по 2 копии каждого ресурса (средней и высокой плотности) или ресурсы высокой плотности просто уменьшаются для устройств с меньшей плотностью?
Это один из способов справиться с ситуацией,Я видел следующее:
- Включайте растровые изображения для каждого разрешения, которое вы хотите поддерживать
- Включайте растровые изображения для самого высокого разрешения, которое вы хотите поддерживать, и уменьшайте масштаб для других разрешений.
- Если вы используете лист мозаики (то есть несколько небольших растровых изображений в большем растровом изображении), вам нужно быть осторожным с билинейной фильтрацией, то есть с смешением краевых пикселей с соседними активами.Если это произойдет, вы получите линии / артефакты в ваших активах.Здесь обсуждается: http://developer.anscamobile.com/forum/2011/06/03/lines-between-my-tiles относительно этой проблемы.
- Используйте векторную графику для самого высокого разрешения, которое вы хотите поддерживать.
При использовании метода 2. или 3. Вот как я с этим справляюсь:
- Создание ресурсов с размером экрана 960 x 1600.
- 480 x 800 - масштаб в два раза
- 320 x 400 - масштаб на одну треть
Это дает мне значение плотности экрана, которое мне нужно для будущих вычислений.
Я предпочитаю метод 3.
В настоящее время я работаю над изометрическим движком 2d игры, который загружает ресурсы .svg с диска, а затем "рисует их в растровое изображение" во время«погрузочная» часть сцены.Благодаря этому я получаю преимущества небольшого размера на диске (.svg) и более высокой производительности (растровые изображения) во время запуска моей игры.
Рабочий процесс выглядит следующим образом:
- Разобрать необходимый игровой ресурс для уровня
- Загрузить связанный ресурс .svg с диска
- Изобразить содержимое .svg в растровое изображение
- Выбросить загруженный файл .svg
- Повторите для всех активов
- Начальный уровень
Используются ли в ваших вычислениях независимые от плотности пиксели?
Да,Я использую его следующим образом:
sprite.x = new_x_position * screen_density;