UnityスクリプトバックエンドIL2CPPとMono2xの違い


14

IL2CPPは、Unityで開発されたスクリプトバックエンドであり、一部のプラットフォーム用のプロジェクトを構築するときにMonoの代替として使用できます。注-IL2CPPは、次のプラットフォーム用にビルドする場合にのみ使用できます。

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

Android展開用に切り替えたプロジェクト(Unity 5.2)があります。私はバックアップされたから、私のスクリプトを切り替えることを試みMono2xIL2CPP、そのことを私に示して

Andriod上のIL2CPPは実験的でサポートされていません

したがって、私の単純な質問は、それがまだサポートされていない場合、オプションが含まれている理由、IL2CPPとMono2xの根本的な違いは何かということです。IL2CPPスクリプトバックエンドに切り替えたのはなぜですか?その何長所と短所は

また、Unity 5.5.2では、Windowsプラットフォームの展開にIL2CPPオプションがないことも確認しました。

回答:


13

情報はUnityバージョン2018.2に基づいています:

IL2CPPのUnityマニュアルを引用:

IL2CPP(Intermediate Language To C ++)は、さまざまなプラットフォーム用のプロジェクトを構築するときにMonoの代替として使用できるUnity開発のスクリプトバックエンドです。IL2CPP(Ahead -of-time(AOT)コンパイラー)は、Monoスクリプトバックエンドと同じ方法でマネージコードのデバッグをサポートします。

IL2CPPを使用してプロジェクトをビルドする場合、Unityは、選択したプラットフォーム用のネイティブバイナリファイル(.exe、apk、.xapなど)を作成する前に、スクリプトとアセンブリからILコードをC ++に変換します。IL2CPPの用途には、Unityプロジェクトのパフォーマンス、セキュリティ、プラットフォーム互換性の向上などがあります。

IL2CPPおよびMonoのUnityチュートリアルを引用:

各スクリプティングバックエンドには長所と短所があり、状況に応じて適切な選択を決定する際に影響があります。

IL2CPP:

  • コード生成は、Monoと比較して大幅に改善されています。
  • C ++のスクリプトコードを上から下までデバッグできます。
  • エンジンコードストリッピングを有効にして、コードサイズを削減できます。
  • ビルド時間はMonoよりも長くなります。
  • Ahead of Time(AOT)コンパイルのみをサポートします。

モノ:

  • IL2CPPよりもビルド時間が速い。
  • Just In Timeコンパイル(JIT)により、より多くのマネージライブラリをサポートします。
  • ランタイムコードの実行をサポートします。
  • マネージアセンブリ(mono-または.netが生成する.dllファイル)を出荷する必要があります。

重要なポイント:

  • Androidプレーヤー設定のデフォルトのターゲットアーキテクチャは、IL2CPPおよびMono Scripting Backendを使用したarmv7およびx86です。
  • MonoはUWPまたはiOS 11以降ではサポートされていません。iOSプレーヤー設定のデフォルトのアーキテクチャは、IL2CPPスクリプトバックエンドを使用したarmv7およびarm64です。

  • UWPビルドはIL2CPPと.NETのみをサポートします。.NETスクリプトバックエンド(非推奨)は、Microsoftの.NETを使用してスクリプトを強化します。


1
あなたの答えには参考文献がないと思います。IL2CPP / MonoリストはUnityのIL2CPP&Monoチュートリアルページと同じテキストであり、最初の2つの段落にはUnityのIL2CPPマニュアルページと同じテキストが異なる順序で表示されています。回答を編集して参照を含めてください。詳細についてはヘルプセンターをご覧ください。
ソニー

3

IL2CPPは、Unityで開発されたスクリプトバックエンドであり、一部のプラットフォーム用のプロジェクトを構築するときにMonoの代替として使用できます。IL2CPPを使用してプロジェクトをビルドすることを選択すると、Unityは、ネイティブバイナリファイル(.exe、apk、.xap、例)選択したプラットフォーム用。IL2CPPの用途には、Unityプロジェクトのパフォーマンス、セキュリティ、プラットフォーム互換性の向上などがあります。

ソース

IL2CPPは、モノラルよりも高速であると思われる*実行プラットフォームです。この文脈において、「実験的は、前の文の「想定される」という言葉に重点を置いています。

実験的な機能は、ベータ版ソフトウェアが一般にリリースされるのと同じ理由でリリースされます。ソフトウェアは使用に十分であり、開発者は、ソフトウェアの準備が整うか、実際のリリース。


* IL2CPPは、リフレクションのみで使用されるコードでは機能しません。リフレクション、シリアル化、またはジェネリックを使用して直接呼び出されることはなく、ビルドから削除されることはありません。現在、Ahead of Timeのコンパイル制限を使用するプラットフォーム上のMonoに同じ制限が適用されます。


だから、まだ成熟していませんが、私は5.2を使用していますが、5.5については経験がありません。または5.6。さらに、il2cppでシフトする長所と短所は何ですか?
ムハンマドファイザンカーン

一部のプラットフォームでは成熟しています。少なくともIOSについては、Unity 5以前から存在していました。Android IL2CPPでさえ、最新バージョンでは実験的とは言えません。Unity 4から5へのジャンプは、IL2CPPの使用を開始するまでAndroidで遅くなることがわかりました。私のテスト用デバイスでは著しく高速です。
タルトルウィザード

1
IL2CPPはマシンコードAhead-of-Timeにコンパイルしているため、ジェネリックのリフレクションと使用に関していくつかの追加の制限があります。MonoのJust-in-Timeコンパイラには、必要なコードをオンザフライでイントロスペクトおよび生成するための情報が手元にありますが、AoTの場合、必要なコードはすべてビルド時に簡単に検出できる必要があります。
DMGregory
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.