Unterschied zwischen Unity Scripting Backend IL2CPP und Mono2x


14

IL2CPP ist ein von Unity entwickeltes Skript- Backend, das Sie als Alternative zu Mono verwenden können, wenn Sie Projekte für einige Plattformen erstellen . Hinweis - IL2CPP ist nur verfügbar, wenn Sie für die folgenden Plattformen erstellen:

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

Ich habe ein Projekt (Unity 5.2), das auf Android-Bereitstellung umgestellt wurde. Ich habe versucht, mein Scripting von auf Mono2xzu ändern IL2CPPund es zeigt mir das

IL2CPP auf Andriod ist experimentell und wird nicht unterstützt

Meine einfache Frage ist also, dass, wenn es immer noch nicht unterstützt wird, warum die Option enthalten ist, was der grundlegende Unterschied zwischen IL2CPP und Mono2x ist. Warum habe ich zum IL2CPP- Skript-Backend gewechselt ? Was sind ihre Vor- und Nachteile ?

Ich habe auch in Unity 5.5.2 überprüft, dass es in der Windows-Plattformbereitstellung keine IL2CPP-Option gibt.

Antworten:


13

Die Informationen basieren auf Unity-Version 2018.2:

Zitieren des Unity-Handbuchs zu IL2CPP :

IL2CPP ( Intermediate Language To C ++ ) ist ein von Unity entwickeltes Skript-Backend, das Sie als Alternative zu Mono verwenden können, wenn Sie Projekte für verschiedene Plattformen erstellen . IL2CPP ( AOT-Compiler) unterstützt das Debuggen von verwaltetem Code auf dieselbe Weise wie das Mono-Skript-Backend.

Wenn Sie ein Projekt mit IL2CPP erstellen, konvertiert Unity IL-Code von Skripten und Assemblys nach C ++, bevor Sie eine native Binärdatei (z. B. .exe, apk, .xap) für die von Ihnen ausgewählte Plattform erstellen. IL2CPP kann unter anderem dazu verwendet werden, die Leistung, Sicherheit und Plattformkompatibilität Ihrer Unity-Projekte zu verbessern.

Zitiert das Unity-Tutorial zu IL2CPP & Mono :

Jedes Scripting-Backend hat Vor- und Nachteile, die Ihre Entscheidung beeinflussen sollten, welche die richtige Wahl für Ihre Situation ist:

IL2CPP:

  • Die Codegenerierung ist im Vergleich zu Mono stark verbessert.
  • Das Debuggen von Skriptcode in C ++ von oben nach unten ist möglich.
  • Sie können das Entfernen des Engine-Codes aktivieren, um die Codegröße zu verringern.
  • Die Bauzeiten sind länger als bei Mono.
  • Unterstützt nur die AOT-Kompilierung (Ahead of Time).

Mono:

  • Schnellere Build-Zeiten als IL2CPP.
  • Unterstützt mehr verwaltete Bibliotheken dank Just In Time Compilation (JIT).
  • Unterstützt die Ausführung von Laufzeitcode.
  • Muss verwaltete Assemblys (DLL-Dateien, die von Mono- oder .NET erstellt werden) ausliefern.

Wichtige Punkte:

  • Die Standardzielarchitektur in den Android Player-Einstellungen ist armv7 und x86 mit IL2CPP und Mono Scripting Backend.
  • Mono wird unter UWP oder iOS 11 und höher nicht unterstützt. Die Standardarchitektur in den iOS-Player-Einstellungen ist armv7 und arm64 mit dem IL2CPP-Skript-Backend.

  • UWP-Builds unterstützen nur IL2CPP und .NET. Das .NET-Skript-Backend (veraltet) verwendet das .NET von Microsoft, um Skripte zu erstellen.


1
Ich denke, Ihrer Antwort fehlen Referenzen. Ich sehe, dass die IL2CPP / Mono-Liste der gleiche Text ist wie die IL2CPP & Mono-Lernseite von Unity , und die ersten beiden Absätze haben den gleichen Text wie die IL2CPP-Handbuchseite von Unity in einer anderen Reihenfolge. Bearbeiten Sie Ihre Antwort, um Verweise einzuschließen. Weitere Informationen finden Sie in der Hilfe .
Sonntag,

3

IL2CPP ist ein von Unity entwickeltes Skript-Backend, das Sie als Alternative zu Mono verwenden können, wenn Sie Projekte für einige Plattformen erstellen. Wenn Sie ein Projekt mit IL2CPP erstellen, konvertiert Unity IL-Code (manchmal auch als CIL-Intermediate Language oder Common Intermediate Language bezeichnet) von Skripten und Assemblys in C ++ - Code, bevor eine native Binärdatei (.exe, apk, .xap, z Beispiel) für die von Ihnen gewählte Plattform. IL2CPP kann unter anderem dazu verwendet werden, die Leistung, Sicherheit und Plattformkompatibilität Ihrer Unity-Projekte zu verbessern.

Quelle

IL2CPP ist eine angeblich äquivalente * Ausführungsplattform, die schneller als Mono ist. In diesem Zusammenhang legt "experimentell" einen starken Schwerpunkt auf das Wort "angeblich" im vorhergehenden Satz.

Experimentelle Funktionen werden aus demselben Grund veröffentlicht, aus dem Beta-Software öffentlich veröffentlicht wird: Die Software ist gut genug, um verwendet zu werden, und die Entwickler möchten Fehlerberichte und andere Rückmeldungen von einer Vielzahl von Benutzern, damit sie an den Punkt gelangen, an dem die Software bereit oder verfügbar ist die eigentliche Version.


* IL2CPP funktioniert nicht für Code, der nur durch Reflektion verwendet wird. Dies tritt auf, wenn Reflektion, Serialisierung oder generische Methoden für Klassen verwendet werden, die niemals direkt aufgerufen und daher aus dem Build entfernt werden. Die gleiche Einschränkung gilt derzeit für Mono auf Plattformen, die Ahead-of-Time-Kompilierungseinschränkungen verwenden.


Also es ist noch nicht ausgereift ich benutze 5.2 keine Erfahrung über 5.5. oder 5.6. Was sind die Vor- und Nachteile von il2cpp?
Muhammad Faizan Khan

Es ist für einige Plattformen ausgereift. Es gibt es schon seit Unity 5 für mindestens iOS. Ich denke, auch das Android IL2CPP ist in den neuesten Versionen nicht experimentell markiert. Ich fand den Sprung von Unity 4 nach 5 auf Android langsamer, bis ich anfing, IL2CPP zu verwenden. Auf meinen Testgeräten ist es merklich schneller.
Tartle Wizard

1
Da IL2CPP im Voraus mit dem Maschinencode kompiliert wird, gelten einige zusätzliche Einschränkungen hinsichtlich der Reflektion und Verwendung von Generika . Monos Just-in-Time-Compiler verfügt über die Informationen, um den benötigten Code im Handumdrehen zu prüfen und zu generieren, aber für AoT muss der gesamte benötigte Code zum Zeitpunkt der Erstellung leicht zu erkennen sein.
DMGregory
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.