IL2CPP を使用して Windows 向けゲームを事前にコンパイルする

ページ更新日 :
ページ作成日 :

検証環境

Windows
  • Windows 10
  • Windows 11
Unity エディター
  • 2020.3.25f1

IL2CPP について

IL2CPP を使用しないでビルドした場合は中間言語の状態でプログラムを配布し、ゲーム実行時にコンパイルしてゲームを動かす形になります。 IL2CPP を使用してビルドすると、ビルドした時点でネイティブコードにコンパイルしゲーム実行時のパフォーマンス向上や逆アセンブル対策などを行うことができます。

詳しくは Unity 公式サイトで説明されているのでそちらを参照してください。

デメリットはビルド時間が長くなるので「事前調査」「最終デバッグ」「リリース」などタイミングを見てビルドしてください。 または夜間ビルドなどで最新状態を作っておいていつでも実行できるようにしておくものありかもしれません。

IL2CPP (Windows) のモジュールインストール

IL2CPP を使用するには追加のモジュールが必要です。

Unity Hub を起動し左のメニューから「インストール」を選択します。 IL2CPP をインストールするバージョンの歯車アイコンをクリック、「モジュールを加える」を選択します。

プラットフォームグループの中にある「Windows Build Support (IL2CPP)」にチェックを付けてインストールします。

インストールが完了するまで待ちます。

IL2CPP でビルドして出力する

ここに記載していない設定は Windows 向けゲーム出力の操作と同じになりますのでそちらを参照して下さい。

ゲームを出力するプロジェクトを開きます。

メニューから「ファイル > ビルド設定」を選択します。

Build Settings ダイアログが表示されたら左下にある「プレイヤー設定」ボタンをクリックします。 ちなみにこのボタンで表示されるダイアログは「プロジェクト設定」と同じです。

左のメニューで「Player」が選択されていますので、下の方にある「PC, Mac & Linux Standalone の設定」の中から「その他の設定」を展開します。

下の方にスクロールすると「設定」のカテゴリの中に「スクリプティングバックエンド」の項目がありますので「IL2CPP」を選択します。

あとは通常通りビルドしてゲームプログラムを出力してください。

Mono でビルドした時に出力されるファイル構成と若干異なります。

出力されるファイル数と総サイズは IL2CPP の方が多くなりますが、これは単に配布に不要なファイルが多く含まれているためです。

この中で以下のものは無くてもゲーム実行が可能です。

ファイル・フォルダ 説明
xxxx_BackUpThisFolder_ButDontShipItWithYourGame このフォルダは配布してはいけないので注意してください。プログラムを生成する際の基となるコードなどが入っています。
UnityCrashHandler64.exe クラッシュハンドラの実行ファイルです。無くても実行可能ですが入れておいてもいいです。

不要なものを削除すれば IL2CPP の方がファイルサイズは小さくなります。

簡単な2Dゲームなのでそこまで差は出ていませんが、IL2CPP のゲームの方がメモリの消費量は少なくなっています。

ビルドでエラーになる場合

Unity 付属の Visual Studio 2019 をインストールしている場合は問題ないと思いますが、 入れていない状態でビルドすると以下のようなエラーメッセージが表示されることがあります。(一例です)

Exception: C++ code builder is unable to build C++ code. In order to build C++ code for Windows Desktop, you must have one of these installed:
        Visual Studio 2015 with C++ compilers and Windows 10 SDK (it cannot build C++ code because it is not installed or missing C++ workload component)
        Visual Studio 2015 installation is found by looking at "SOFTWARE\Microsoft\VisualStudio\14.0_Config\InstallDir" in the registry
        Windows 10 SDK is found by looking at "SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0\InstallationFolder" in the registry

        Visual Studio 2017 (or newer) with C++ compilers and Windows 10 SDK (it cannot build C++ code because it is not installed or missing C++ workload component)
        Visual Studio 2017 (or newer) installation is found using Microsoft.VisualStudio.Setup.Configuration COM APIs
        Windows 10 SDK is found by looking at "SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0\InstallationFolder" in the registry

これは IL2CPP でビルドするのに必要なコンポーネントが不足していることによるものです。

Unity で Visual Studio 2019 をインストールした際にインストールされるコンポーネントが以下の一覧になります。 スクリプトエディターが Visual Studio の場合は以下の一覧からコンポーネントを追加インストールしてください。 上にあるものほど必要な可能性が高く、下にあるものはおそらく入れても入れなくても問題ないものです。

  • C++ コア機能 (おそらく必須?)
  • MSVC v142 - VS2019 C++ x64/x86 ビルドツール (最新) (必須。v143 や VS2022 などの後継バージョンでも問題ない)
  • Windows 10 SDK (10.0.16299.0) (必須の可能性あり。バージョンは 16299 以降であれば何でもよい?)
  • MSBuild
  • C++ 2019 再領布可能パッケージの更新プログラム
  • Visual Studio Tools for Unity
  • C# および Visual Basic Poslyn コンパイラ
  • .NET Framework 3.5 開発ツール
  • C# および Visual Basic
  • .NET Framework 4.7.1 Targeting Pack
  • NuGet パッケージ マネージャー
  • テキストテンプレート変換

以下インストール手順です。

ここから必要なものをチェックしインストールします。