Разница между единой скриптовой подсистемой IL2CPP и Mono2x

14

IL2CPP - это сценарий , разработанный Unity, который вы можете использовать в качестве альтернативы Mono при создании проектов для некоторых платформ. Примечание - IL2CPP доступен только при сборке для следующих платформ:

  • Android AppleTV, iOS *, Nintendo 3DS, Nintendo Switch, Playstation 4, Playstation Vita, WebGL *, Windows Store, Xbox One

У меня есть проект (Unity 5.2), который переключился на развертывание Android. Я попытался переключить свои сценарии Mono2xобратно на IL2CPPи это показывает мне, что

IL2CPP на Andriod является экспериментальным и не поддерживается

Итак, мой простой вопрос: если он все еще не поддерживается, то почему этот параметр включен, в чем принципиальная разница между IL2CPP и Mono2x. Почему я перешел на серверный сценарий IL2CPP ? каковы его плюсы и минусы ?

Я также проверил в версии 5.5.2, что при развертывании платформы Windows опция IL2CPP отсутствует.

Мухаммед Файзан Хан
источник

Ответы:

13

Информация основана на версии Unity 2018.2:

Цитирование руководства Unity по IL2CPP :

IL2CPP ( Intermediate Language To C ++ ) - это сценарий, разработанный Unity, который вы можете использовать в качестве альтернативы Mono при создании проектов для различных платформ. IL2CPP ( опережающий компилятор (AOT)) поддерживает отладку управляемого кода так же, как сценарий Mono.

При создании проекта с использованием IL2CPP Unity преобразует код IL из сценариев и сборок в C ++ перед созданием собственного двоичного файла (например, .exe, apk, .xap) для выбранной вами платформы. Некоторые из применений IL2CPP включают повышение производительности, безопасности и совместимости платформ ваших проектов Unity.

Цитирование учебника Unity по IL2CPP и Mono :

Каждый сценарий Backend имеет свои преимущества и недостатки, которые должны влиять на ваше решение, которое является правильным выбором для вашей ситуации:

IL2CPP:

  • Генерация кода значительно улучшена по сравнению с Mono.
  • Возможна отладка скриптового кода в C ++ сверху вниз.
  • Вы можете включить разбор кода двигателя, чтобы уменьшить размер кода.
  • Время сборки длиннее, чем с Mono.
  • Поддерживается только компиляция Ahead of Time (AOT).

Моно:

  • Более быстрое время сборки, чем у IL2CPP.
  • Поддерживает больше управляемых библиотек благодаря компиляции Just In Time (JIT).
  • Поддерживает выполнение кода во время выполнения.
  • Должен поставлять управляемые сборки (файлы .dll, которые производят моно- или .net).

Важные моменты:

  • Целевая архитектура по умолчанию в настройках проигрывателя Android - armv7 и x86 с IL2CPP и Mono Scripting Backend.
  • Mono не поддерживается в UWP или iOS 11 и выше. Архитектура по умолчанию в настройках проигрывателя iOS - armv7 и arm64 со сценарием IL2CPP.

  • Сборка UWP поддерживает только IL2CPP и .NET. Серверный сценарий .NET (устарел) использует Microsoft .NET для создания сценариев.

Санкет прабху
источник
1
Я думаю, что ваш ответ не хватает ссылок. Я вижу, что список IL2CPP / Mono - это тот же текст , что и страница учебника Unity по IL2CPP & Mono , а первые два абзаца имеют тот же текст, что и страница руководства Unity по IL2CPP в другом порядке. Пожалуйста, отредактируйте свой ответ, чтобы включить ссылки, см. Справочный центр для получения дополнительной информации.
сынок
3

IL2CPP - это сценарий, разработанный Unity, который вы можете использовать в качестве альтернативы Mono при создании проектов для некоторых платформ. Когда вы решаете построить проект с использованием IL2CPP, Unity преобразует код IL (иногда называемый CIL - Intermediate Language или Common Intermediate Language) из сценариев и сборок в код C ++, прежде чем создавать собственный двоичный файл (.exe, apk, .xap, для пример) для выбранной вами платформы. Некоторые из применений IL2CPP включают повышение производительности, безопасности и совместимости платформ ваших проектов Unity.

Источник

IL2CPP - предположительно эквивалентная * платформа для выполнения, которая быстрее моно. В этом контексте «экспериментальный» делает сильный акцент на слове «предположительно» в предыдущем предложении.

Экспериментальные функции выпускаются по той же причине, по которой бета-версия программного обеспечения публикуется публично: программное обеспечение достаточно хорошо для использования, и разработчики хотят получать отчеты об ошибках и другие отзывы от широкого круга пользователей, чтобы они могли добраться до того момента, когда программное обеспечение будет готово или фактический выпуск.


* IL2CPP не работает для кода, который используется исключительно посредством отражения, что произойдет при использовании отражения, сериализации или обобщений в классах, которые никогда не вызываются напрямую и, следовательно, удаляются из сборки. То же самое ограничение в настоящее время применяется к Mono на платформах, которые используют ограничения компиляции Ahead of Time.

Питер
источник
Так что это еще не зрелый, но я использую 5,2 нет опыта около 5,5. или 5.6. Кроме того, каковы плюсы и минусы для перехода на il2cpp?
Мухаммед Файзан Хан
Это зрелый для некоторых платформ. Так было до Unity 5, по крайней мере, для IOS. Я думаю, что даже Android IL2CPP не отмечен экспериментальным в последних версиях. Я обнаружил, что переход с Unity 4 на 5 медленнее на Android, пока я не начал использовать IL2CPP. Это заметно быстрее на моих тестовых устройствах.
Tartle Wizard
1
Поскольку IL2CPP компилируется в машинный код с опережением времени, у него есть несколько дополнительных ограничений в отношении отображения и использования обобщений . Компилятор Just-in-Time от Mono располагает информацией, позволяющей проанализировать и сгенерировать необходимый код на лету, но для AoT весь необходимый код должен легко обнаруживаться во время сборки.
DMGregory