Різниця між сценаріями єдиного сценарію IL2CPP і Mono2x


15

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

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

У мене є проект (єдність 5.2), який перейшов на розгортання Android. Я спробував переключити сценарії, підтримувані Mono2xна, IL2CPPі це показало мені це

IL2CPP на Андріоді експериментальний і не підтримується

Отже, моє просте запитання полягає в тому, що якщо воно все ще не підтримується, то чому включена опція, в чому полягає принципова відмінність IL2CPP від ​​Mono2x. Чому я перейшов на сценарій сценаріїв IL2CPP ? які його плюси і мінуси ?

Я також перевірив в єдності 5.5.2 немає варіанту IL2CPP у розгортанні платформи Windows.

Відповіді:


14

Інформація базується на версії 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 :

Кожен вихідний сценарій має переваги та недоліки, які повинні впливати на ваше рішення, щодо правильного вибору для вашої ситуації:

IL2CPP:

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

Моно:

  • Швидші строки збирання, ніж IL2CPP.
  • Підтримує більше керованих бібліотек завдяки компіляції Just In Time (JIT).
  • Підтримується виконання коду виконання.
  • Потрібно відправляти збірки (.dll файли, які виробляють моно- або .net).

Важливі бали:

  • Цільова архітектура за замовчуванням у налаштуваннях програвача Android - armv7 та x86 із IL2CPP та Mono Scripting Backend.
  • Моно не підтримується на UWP або iOS 11 і вище. Архітектура за замовчуванням у налаштуваннях плеєра iOS - armv7 та arm64 із програмою Backend для сценаріїв IL2CPP.

  • Підтримка UWP підтримує лише IL2CPP і .NET, резервний скрипт .NET (застарілий) використовує .NET для керування сценаріями харчування.


1
Я думаю, що у вашій відповіді відсутні посилання. Я бачу, що список IL2CPP / Mono - той самий текст , що і підручник IL2CPP & Mono підручника Unity , і перші два абзаци містять той самий текст, що і в посібнику IL2CPP керівництва Unity в іншому порядку. Відредагуйте свою відповідь, щоб включити посилання, див . Довідковий центр для отримання додаткової інформації.
Синку

3

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

Джерело

IL2CPP - це нібито еквівалентна * платформа виконання, яка швидша, ніж моно. У цьому контексті "експериментальний" робить сильний наголос на слові "нібито" в попередньому реченні.

Експериментальні функції випущені з тієї ж причини, коли бета-програмне забезпечення випускається публічно: програмне забезпечення досить добре для використання, і розробники хочуть звітів про помилки та інших відгуків широкого кола користувачів, щоб вони могли дістатись до того, коли програмне забезпечення готове або фактичний реліз.


* IL2CPP не працює для коду, який використовується виключно за допомогою відображення, що станеться при використанні рефлексії, серіалізації або генерики на класах, які ніколи не викликаються безпосередньо і таким чином позбавляються від збірки. Це ж обмеження в даний час стосується Mono на платформах, які використовують обмеження на компіляцію перед часом.


Так що вона ще не дозріла, але я використовую 5.2 немає досвіду про 5.5. або 5.6. крім того, які плюси можна змінити на il2cpp?
Мухаммед Файзан Хан

Він зрілий для деяких платформ. Це було ще з часів Unity 5, принаймні IOS. Я думаю, що навіть Android IL2CPP в останніх версіях не позначений експериментально. Я виявив, що стрибок з Unity 4 на 5 є повільнішим на Android, поки я не почав використовувати IL2CPP. Це помітно швидше на моїх тестових пристроях.
Майстер Тартла

1
Оскільки IL2CPP збирається до машинного коду заздалегідь, у нього є кілька додаткових обмежень щодо відображення та використання дженериків . Компілятор Just-in-Time Mono має під рукою інформацію про інтроспекцію та генерування необхідного коду, але для AoT весь необхідний код повинен бути легко виявити під час збирання.
DMGregory
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.