UnityでIL2CPPを使ったビルドを試す
https://gyazo.com/e9a94dfc7aeac065bbb00ead3c79a0b3
諸注意
今回の記事についてはまだ完全に調べきれているわけではないので、この記事を素に他の参考サイト様などを見て頂けると幸いです。よろしくお願いいたします。m(_ _)m
今後情報は追記したいと思います。
そもそもIL2CPPとは?
IL2CPP は Unity が開発したスクリプティングバックエンドで、ある種のプラットフォームのプロジェクトを作成するときに、Mono の代わりに使用できます。IL2CPP を使ってプロジェクトを作成することを選択すると、Unity は選択したプラットフォームのネイティブバイナリファイル (.exe, apk, .xap など) を作成する前に、スクリプトからの IL コード (CIL、Common Intermediate Language、共通中間言語) を変換し C++ コードに組み立てます。IL2CPP を使用すると、Unity プロジェクトのパフォーマンス、セキュリティ、プラットフォームの互換性が向上する場合があります。(Unity公式より)
IL2CPPによるビルド手順
では、ものは試しに早速ビルドしてみましょう。
実行環境
Windows10 Pro
Unity2018.4.6f1
VisalStudio2017
今回はプロジェクトを初めて作った時の、空のSampleSceneを「Standalone」でBuildしてみます
任意のプロジェクトを開き、Fileタブから「Build Settings」を選択する
https://gyazo.com/9991b406e98e2788c8ddb464b835d8f9
「Scene In Build」内にビルドに含めたいシーンを入れる
「PlayerSettings...」のボタンを押す
https://gyazo.com/2f4fb240ce723276b75947d93b929555
Inspector上にPlayerSettingsが表示されるので、「OtherSettings」を開き、「Configuration」を見つける
上から2つ目の「Script Backend」がデフォルトでは「Mono」になっているので、「IL2CPP」に切り替える
https://gyazo.com/f295882e73e9c435a24d8e7da2e4febd
https://gyazo.com/dc305bc1f61804cb4de1c083c4e1c6bc
後は任意の場所にBuildするだけ
https://gyazo.com/96109be126fb3c94ba4f25d4b5459257
ビルド後のフォルダ構成
Buildした後のファイルはこのようになっています。(ファイル名は「IL2CPPTest」にしています。)
https://gyazo.com/9e88585b8b285476422c42d4d5cdb8f4
従来のMonoでのBuildではこのようになっています
https://gyazo.com/004ffffb46f7f3270ef6e8a90a5fd07d
フォルダのサイズ
フォルダのサイズはどう変化したか見てみましょう。
右がIL2CPPでビルドしたフォルダ 左が従来のMonoでビルドしたフォルダです。
https://gyazo.com/998dce63b91cbdffd150e709a1d75238 https://gyazo.com/ed62cd67722ff664ee259389ae72539f
おや、IL2CPPの方がフォルダサイズが3倍近くある...?
実はこれには種があります。
IL2CPPでビルドした方に、「(任意のフォルダ名)_BackUpThisFolder_ButDontShipltWithYourGame」というフォルダが存在します。このフォルダ自体は作成した実行ファイルには不必要なものなので、削除してしまいます。それでは、もう一度比較してみましょう。
https://gyazo.com/7f25af9d2c881b6e784f479a70686087 https://gyazo.com/ed62cd67722ff664ee259389ae72539f
約14MBぐらい減りましたね。や っ た ぜ。
IL2CPPのメリットとデメリット
メリット
容量の削減
パフォーマンス、セキュリティ、プラットフォームの互換性の向上
デメリット
Monoよりビルド時間が長くなる(これに関しては最適化する方法があるので、下記に記載)
Monoとは異なり、AOT(ahead of time)コンパイルのみをサポートしている
ビルド時間の最適化
Unity公式では、3つ程ビルド時間を短くする方法が記載されています。
インクリメントビルドの使用
インクリメントビルドを行う場合、C++ コンパイラーは、最後にコンパイルしてから変更が加えられたファイルのみを再度コンパイルします。 インクリメントビルドを行うには、(ターゲットディレクトリを削除せずに) 以前のビルドロケーションと同じ場所にプロジェクトをビルドします。
プロジェクトとビルドフォルダーをマルウェア対策のソフトウェアスキャンから除外
プロジェクトをビルドする前に、マルウェア対策のソフトウェアを無効にしてビルド時間を向上させることができます。(Unity テクノロジーズの検証では、新しくインストールした Windows 10 で Windows Defender を無効にした後、50 – 66% ビルド時間が減少しました。)
プロジェクトとビルドフォルダーを Solid State Drive (SSD) に格納
Solid State Drive (SSD) は以前からあるハードディスクドライブ (HDD) に比べ、より速く読み込み、書き込みを行えます。IL コードを C++ に変換しそれをコンパイルすることは、大量の読み込み、書き込み操作を伴います。ストレージデバイスのスピードが速いと、この処理もより早くなります。
対応しているプラットフォーム
Android
AppleTV
iOS
Nintend 3DS
Playstation 4
Playstation Vita
ユニバーサルWindowsプラットフォーム
WebGL
Xbox One
iOSとWebGLについては、IL2CPPが唯一使用可能である。
終わりに
まだ、勉強中なのと参考資料の数が多いというわけではないのでもう少し試してみたい所ですね...
でも見た感じ使いやすくはなっていってるみたいなので、皆さんも試してみてはいかがでしょうか?
参考サイト様
Unity公式
IL2CPPに関する軽い話(2015/6/22)
執筆 :Villagevillage.icon
最終更新:2019/08/18