Comments 3
Player settings > other settings > Optimization > Manager scripting level = high
Не забываем при этом про аннотации и link.xml, если у вас есть динамический код/рефлексия.
Жаль, что автор не захотел разобраться в теме, перемешал полезное с ерундой. Невозможно оптимизировать то, что нельзя измерить. На стороне юнити нужно было использовать https://docs.unity3d.com/Packages/com.unity.build-report-inspector@latest и Editor.log. Билды, раз уж речь в основном про андроид, рассматривать в https://7zip.org (эта же информация есть build report inspector, но в 7zip удобнее упорядочить по размеру и сравнить между собой). Можно было взять какой-нибудь туториальный проект со стора и на его примере разобрать методы. Упомянуть, почему вообще приходится бороться с размером. Разработчики обычно начинают о нем заботиться, когда сталкиваются с ограничениями в сторе - 20 МБ для Instant и 150 МБ для условного apks (сборки под конкретную платформу, получаемой из aab). Со стороны пользователя размер билда тоже важен, но где для него плюс - в большую или меньшую сторону, зависит от жанра. Он может посчитать, что ему "недоложили".Так вот, из Editor.log можно получить проценты по типам ассетов https://docs.unity3d.com/uploads/Main/FileSizeOptimization.png. Начинать нужно конечно с того что "весит" больше всего, но хорошо бы пройтись по оптимизациям всех типов. Про текстуры или звук написано довольно много (но есть неочевидное - вынести в докачиваемые assetbundles или положить .jpg в StreamingAssets), а вот как например уменьшить размер анимаций или шейдеров? Или что такое File headers? Иногда они занимают очень большой процент. Потом переходить к оптимизации кода - отключение в Package Manager лишних модулей, удаление лишних пакетов. Все это сопровождать цифрами - сделали это, время билда такое, новый размер билда такой. Чтобы можно было оценить влияние и убедиться, что оно вообще есть (Roslyn Analyzers, серьезно?). Затем уже экспериментировать с настройками Player'a. Потом, если речь про андроид, то спуститься "ниже" к минификаторам, настройке gradle (сжатие или не сжатие по типам файлов и тп). Как после них проверить работоспособность, как вернуть в билд излишне минифицированное. Когда цель поместиться в 20 МБ, приходится выгребать крохи из всех углов. Вот это был бы полезный и показательный материал.
Позволю написать пару комментариев:
6) Поиск не используемых скриптов
Player settings > other settings > Optimization > Manager scripting level = high
Если в проекте есть методы или классы, которые используются только нативными плагинами, то они будут удалены при сборке. Это нужно учитывать
8) Переключиться на промежуточный с++
Player settings > other settings > Configuration > Scripting backend = ILL2CPP
При старте проекта нужно сразу определиться с бекендом, для этого нужно знать ограничения и нюансы каждого (например, сборка arm64 возможна только с IL2CPP).
Использование разных бекендов на разных стадиях проекта может привести к большим проблемам совместимости, некоторые плагины просто не будут работать при сборке с IL2CPP, хотя прекрасно все было у Mono
Unity «уменьшение размера файла на устройстве» Часть 1