Как поддерживать разную плотность spites в Unity для устройств Android?

Я делаю 2d-игру в Unity с изображениями 4k, нужно оптимизировать изображения для мобильных устройств. Я обнаружил, что у Android есть отличный подход для моего случая. Просто создайте разные папки для разрешений экрана (xhdpi, hdpi, mdpi, ldpi) (проверьте ссылку для получения дополнительной информации) и опубликуйте свою игру как набор приложений. Когда пользователь загрузит игру, он получит разрешение текстур, которое поддерживает его устройство, и это супер круто и именно то, что мне нужно (полезная ссылка об этом).

Но я не могу найти информации, как это сделать в Unity (создавать изображения для разных разрешений и делать смарт-комплект приложений). Unity поддержка пакета приложений, но как обрабатывать спрайты с разным разрешением - все еще для меня загадка.


person Krblshna    schedule 20.05.2020    source источник


Ответы (1)


Я бы рекомендовал использовать векторные форматы SVG, они масштабируются под любой размер экрана. Загрузите пакет векторной графики из диспетчера пакетов.

https://docs.unity3d.com/Packages/[email protected]/manual/index.html

Вы также можете сделать что-то вроде Resources.Load для разных размеров текстур и загружать только те, которые вам нужны, в зависимости от разрешения экрана.

https://docs.unity3d.com/ScriptReference/Resources.Load.html

https://docs.unity3d.com/ScriptReference/Screen-resolutions.html

person vasmos    schedule 20.05.2020
comment
Спасибо за anwser, но мы делаем 2d-арт в стиле «укажи и щелкни», и в моем случае использовать svg невозможно. Насколько я знаю, при запуске Resources.Load потребуется много времени, чтобы загрузить все ресурсы, и ребята из Unity советуют избегать resources.load (в производственной сборке это все еще полезно для стадии разработки). У меня была такая же идея, но использовались варианты атласа спрайтов. Но похоже, что это много работы и не решает проблему с окончательным размером apk (у него будет графика для всех случаев и слишком большой вес) - person Krblshna; 20.05.2020