Если сравнивать все 3, то на самом деле, они очень похожи. Юнити в определённых местах проще, и при этом, вхождение в него легчайшее. Куча манулов, гайдов, фигайдов и прочего. Остальные движки столько обучающих материалов не имеют. Ну и на юнити самый обширный магазин ассетов, где есть вообще всё.
Крайинжайн и юнити это с#. То есть нужно знать с#. Анрил, вроде как с++, но честно говоря, я не уверен. Возможно он другие языка тоже поддерживает.
Но если анрил реально поддерживает только с++, то в целом всё логично. Люди пишущие на с++ куда больше внимания уделают распределению памяти и прочих приколов. Молоденькие кодеры на с# столько внимания оптимизации позволяют себе не уделять.
Отсюда фиговая оптимизация на юнити. Не потому что на юнити нельзя хорошо сделать оптимизацию, а потому что люди чаще делают оптимизацию нормальной на с++, чем на с#.
Но это не значит, что на юнити ты не можешь сделать качественную оптимизацию. Тут дело только в твоём мастерстве с#.
Впрочем, это не значит и того, что на с++ ты не можешь заруинить оптимизацию.
Подытожим: все движки нормальные. Оптимизация зависит от твоих рук.