Это старый пост, но я решил, что отвечу на него, потому что никто здесь действительно не понял его правильно.
Важно помнить, что внутренняя работа ядра Unity полностью родная.,Физический движок и, следовательно, все, что связано со столкновением.Система окклюзии (умбра).Все ядро движка рендеринга.Все это написано на C / C ++ и работает с полной скоростью на любой платформе.То, что говорит АмитАполло, совершенно неверно, нереальный движок 3 не является более прямым «нативным» по сравнению с единством.И Unity, и Unreal engine 3, а также любой другой 3D-движок, такой как Ogre или cocos3d, все их основные системы рендеринга написаны на c / c ++.Некоторые из этих механизмов могут иметь определенные алгоритмы внутреннего рендеринга, реализованные лучше, чем другие, и, таким образом, могут давать лучшую производительность, но это не имеет никакого отношения к тому, являются ли они «родными», потому что система рендеринга внутреннего ядра является родной для всех них,
Внутренняя работа физического движка также написана на c / c ++, и, следовательно, физический движок в UE3 и Unity работает на «полной собственной скорости».
Демонстрация epicCitadel такжене демонстрирует большего технического мастерства или производительности, чем Unity на iOS.Большая часть «визуального воздействия» демо цитадели проистекает просто из того факта, что это действительно хорошее произведение искусства.Демонстрация цитадели не продвигает большее число вершин, чем то, что Unity может обрабатывать на iOS, демоверсия цитадели не демонстрирует более продвинутые технологии шейдеров или освещения, чем то, что Unity может делать на iOS.На самом деле, есть больше примеров того, как Unity демонстрирует более продвинутые методы мобильного рендеринга, чем продемонстрировал Unreal Engine 3.Посмотрите на такие игры, как Shadowgun или BladeSlinger, сделанные в Unity, обе эти игры демонстрируют более продвинутые технологии мобильного рендеринга, чем Unreal Engine 3.Световые зонды, мобильные шейдеры BRDF с прозрачностью и нормальным отображением и хорошо реализованные динамические мобильные тени - это лишь некоторые из них.Подавляющее большинство самых успешных 3D-игр в магазине приложений - это игры Unity, и поэтому Unity вложила множество НИОКР в производительность и возможности мобильного рендеринга Unity.
Теперь Unity написан на C # и Mono.Который работает медленнее, чем собственный код, по оценкам, на 50% медленнее на iOS.Но вы должны иметь в виду, что вы делаете только игровую логику в этом коде.Вы не пишете какой-либо код на C # и Mono в Unity, который касается работы его внутренней системы рендеринга или внутренней работы системы физики.Вы пишете игровую логику только на C #, которая затем взаимодействует с ядром рендеринга и физики, который затем выполняется с полной собственной скоростью.Mono C # работает медленнее, чем собственный C ++, но если вы будете программировать с умом, я думаю, вы вряд ли это помешаете, потому что вы выполняете игровую логику только в Mono C #, а игровая логика не обязательно сильно загружена процессором.По моему опыту, действительно трудно сделать iPad 2 ниже 60 кадров в секунду на чисто игровой логике, написанной на Mono C #.На самом деле мне это никогда не мешало.
Если мы хотим сравнить с Unreal Engine 3, имейте в виду, что UE3 также настроен для программирования своей игровой логики на не родном языке, UnrealScript.Unrealscript - это язык, очень похожий на Mono C # или Java, где UnrealScript компилируется в байтовый код, а затем интерпретируется во время выполнения.То есть, как и в Unity, игровая логика не является «родной» в UE3.
Теперь, если вы посмотрите здесь: http://lua -users.org / wiki / LuaVersusUnrealScript Это сравнение производительностиUnrealScript для C ++ для простой арифметической операции с использованием целых чисел.Это показывает, что нереальный сценарий от 1/4 до 1/20 скорости C ++.
Тогда посмотрите здесь: http://www.codeproject.com/Articles/212856/Head-to-head-benchmark-Csharp-vs-NETЕсли вы прокрутите вниз до C # vs C ++ Простой арифметический тест.Это показывает, что Mono C # составляет 3/4 скорости C ++, выполняя простую int арифметику.Mono C # составляет примерно половину скорости при выполнении простой арифметики с поплавками.Тесты int64 и double на самом деле мало что значат для нас, потому что, как правило, вы никогда не будете использовать их в критичном к производительности коде в игровой логике iOS.
Теперь другие тесты показывают, что Mono C # порой имеет столь же плохой результат.как 1/20 производительность C ++.Но они проходят через очень специфические тесты, действительно лучший тест от яблок до яблок, который я смог найти, - это простые арифметические тесты.
На самом деле, поскольку скрипты Unity работают на Mono C #, а UE3 работает на UnrealScript.На самом деле Unity - это движок, который предложит вам радикально более высокую производительность в игровом логическом коде.
Идея о том, что UE3 более продвинутый, или предлагает более высокую производительность, или любую большую графическую возможность, чем Unity на iOS, просто неправда.Наоборот, это правда.
Теперь это правда, что если бы вы использовали что-то вроде cocos3d, вы могли бы потенциально получить более высокую производительность, потому что ваша игровая логика могла бы быть написана также на C ++.Но преимущества работы с языком сценариев, например c #, для создания игровой логики, я думаю, намного перевешивают потерю производительности, которая обычно никогда не вызывает проблем.А именно преимущества использования языка сценариев для игровой логики заключаются в том, что он предлагает вам более быстрые итерации проектирования, что при выполнении игр действительно важно из-за того, насколько странными могут быть вещи, и как часто вам приходится перекомпилировать и тестировать код.
Однако в Unity действительно легко писать плагины с собственным кодом в версии Pro.Так что, если у вас когда-нибудь есть фрагмент кода, критичного к производительности, который должен работать на собственной скорости, вы можете написать его на C ++, скомпилировать его в собственную библиотеку, а затем вызвать его из Mono C #.