Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
поскольку там картинки представляются в BMP.
а вот оставлять Automatic Truecolor не рекомендуется, потому что (как показал опыт) он может восприняться системой как RGBA32.
Снизить качество изображений в настройках импорта по схеме: 32 bit -> 24 bit -> 16 bit, наблюдая за тем, чтобы уровень качества изображения оставался в пределах допустимого.
Ограничить maxTextureSize для изображений, для которых это возможно с сохранением приемлемого качества.
Тщательно вручную удалять неиспользуемые ассеты в папках Resources
Для изображений JPG: сменить расширение файла на bytes и он превратится в TextAsset. После чего воспользоваться функцией Texture2D.LoadImage() для загрузки картинки.
По возможности использовать MP3, а не WAV.
Потому, получается, что официальная документация Unity в этом месте не совсем релевантна.
А вот использования других (необязательных) dll желательно избегать во имя снижения размера сборки.
Просьба рассматривать данный материал как более-менее систематизированные результаты исследования, а не как универсальное руководство к действию.
для текстур без альфы автокомпрессию — на android они автоматически сожмутся в ETC1,
юнити переводит текстуру в RGBA16 / RGBA32 только при наличии альфа-канала
Для непрозрачных текстур всегда автокомпрессия
Все держать в wav — это позволит выбирать метод компрессии и битрейт прямо в юнити
Для ETC1 картинка должна быть NPOT. У нас так просто невозможно. Если заимпотрить её как NPOT, то идею pixel-perfect можно похоронить.
Таким образом, в нашем случае — точно не AutoCompressed.
Но перед сборкой мы её иногда скейлим и реимпортируем с использованием средств C#
Низкий битрейт в настройках импорта не влияет на размер сборки, только на потребление памяти. Зато если сформировать файл с низким битрейтом извне, то его размер будет меньше.
Нельзя работать с текстурами мимо юнити
Поэтому нужно следить именно за размером оперативной памяти,
Наша графика не так проста.
Какими атласами Вы пользуетесь?
fixed4 _LayerMask;
...
o.a = dot(tex2D(_AlphaTex, i.uv), _LayerMask);
Документ приводит список обязательно включаемых в сборку dll и призывает минимизировать количество дополнительных dll (особенно тяжёлых). В частности, по возможности не использовать System.dll (добавляет к APK 2 Мбайт). Однако даже если мы будем избегать ссылок на методы из этой библиотеки, System.dll всё равно (по состоянию на Unity 4.5.5) включается в сборку, так как её подтягивает обязательная Mono.Security.dll. Потому, получается, что официальная документация Unity в этом месте не совсем релевантна.
А вот использования других (необязательных) dll желательно избегать во имя снижения размера сборки.
DLL (англ. Dynamic Link Library — «библиотека динамической компоновки», «динамически подключаемая библиотека») (Расширение приложения) в операционных системах Microsoft Windows и IBM OS/2 — динамическая библиотека, позволяющая многократное использование различными программными приложениями. K DLL относятся также элементы управления ActiveX и драйверы. В системах UNIX аналогичные функции выполняют так называемые общие объекты (англ. shared objects).
ей богу не могли назвать скажем DLL2
Unity: Сборка под Android или «размер имеет значение»