Почему игры на Unity плохо оптимизированны?
Если игра работает на 80-85% устройствах так, как необходимо и аудитория не теряется - то можно не оптимизировать. Во всех остальных случаях - нужна оптимизация.
1. https://docs.unity3d.com/Manual/BestPracticeUnders...
2. https://docs.unity3d.com/Manual/MecanimPeformancea...
3. https://docs.unity3d.com/Manual/MobileOptimization...
Additional: Draft upgrade to 2017.2
4. https://docs.unity3d.com/ScriptReference/AnimatorU...
5. www.strichnet.com/how-to-improve-the-performance-o...
6. Может это как-то поможет: https://docs.unity3d.com/Manual/ProfilerWindow.html
7. https://docs.unity3d.com/Manual/ExpertGuides.html
Потому что порог вхождения очень низкий и любой рукожопый разработчик может дотащить свою игру до магазина. Сам движок ни в чём не виноват кроме доступности, средств для оптимизации предостаточно: встроенный профайлер, внешние профайлеры, Frame Debugger, RenderDoc и т. п.
Нагружает движок всё, что есть в игре. Если оно сделано неаккуратно или из рук вон плохо, то и результат будет соответствующий. Решается это построением правильного производственного процесса и регулярным тестированием и профилированием. Если в план разработки изначально не заложена фаза тестирования и полировки, то потом, скорее всего, на неё уже не останется ресурсов. Кроме того, некоторые оптимизации требуют изменения подхода к разработке и на полуготовой игре их уже не применить. Многие студии находятся под влиянием "людей с деньгами", которые ожидают увидеть результат в кратчайшие сроки, а процесс оптимизации видимых результатов практически не даёт, и, если игра большую часть времени нормально играется, то на всё остальное закрывают глаза. Кроме того, тормоза и баги редко сильно влияют на продажи.
Что касается того, как оптимизировать игры на юнити, про это есть куча разделов в мануале, даже есть официальный туториал. В основном всё сводится к запуску профайлера и фрейм дебаггера и анализу циферок.