【Unity】IL2CPPを使ったビルドで失敗するときの対処法

IL2CPPのビルドを成功させよう ゲーム開発

Unityでゲームを作っていると色々なエラーに出くわしますが、中でも厄介なのがビルド時のエラーです。ゲームが完成して「さあビルドするぞ!」というときにエラーが出たら思わず冷や汗が出てしまいますよね。本当に心臓に悪いです。

それで以前「IL2CPP」を使ってゲームをビルドしたら

il2cpp.exe did not run properly!

というエラーが出てビルドできない問題に直面しました。その後色々調べて解決できたので、ここではその対処法をまとめておきますね。

そもそも「IL2CPP」とは?

では、そもそも「IL2CPP」とは何か?という部分から簡単に説明します。IL2CPPは一言でいうと「C#スクリプトをC++のコードに変換するUnityの仕組み」のことです。

Unityではスクリプトのコンパイルで

  1. Mono
  2. IL2CPP

のどちらを使用するかを選ぶことができます(下図、Player Settingsの「その他の設定」に項目があります)。

スクリプティングバックエンドの選択

両者の違いについては下の表をご覧ください(スタンドアロンプラットフォームの Player 設定 – Unity マニュアルより引用)。

スクリプティングバックエンド 仕組み
Mono C# コードを .NET Common Intermediate Language (CIL) にコンパイルし、それを Common Language Runtime を使用して実行
IL2CPP C# コードを CIL にコンパイルし、CIL を C++ に変換し、その C++ をネイティブのマシンコードにコンパイル

それでUnityのマニュアルによると、

IL2CPP を使用すると、Unity プロジェクトのパフォーマンス、セキュリティ、プラットフォームの互換性を向上させることができます。

とのことなので可能であればIL2CPPを使ってビルドしたいところです。

IL2CPPでビルドエラーが出るときの主な原因&対処法

さてここからが本題なのですが、IL2CPPを使ってビルドしたらエラーが出てしまう場合は一体どうすれば良いのでしょうか?ここでは主な原因2つとその対策を見てみましょう。

  1. Unityプロジェクトのパスに日本語が含まれている
  2. C++コンパイラがインストールされていない

原因1:Unityプロジェクトのパスに日本語が含まれている

まず、Unityプロジェクトまでのパスに日本語が含まれているとエラーが出る場合があるようです。パスに日本語が混じっていないかを確認してみましょう。

原因2:C++コンパイラがインストールされていない

次に、そもそもC++コンパイラがインストールされていない場合にも今回のようなエラーが出ます(※私の場合はこちらが原因でした)。

この場合はVisual Studioインストーラーを開き、「変更」→「C++によるデスクトップ開発」にチェックを入れてコンパイラをインストールしましょう(下図)。

C++によるデスクトップ開発

どうしてもエラーが出てしまう場合の最終手段

ちなみに上記の原因のいずれにもあてはまらず、どうしてもエラーが出てしまう場合はIL2CPPではなくMonoでビルドすると成功する場合があります。万策尽きたけどゲームをリリースしないわけにはいかない…という場合は試してみてください。

おわりに

以上、ごく簡単ではありますがIL2CPPでビルドしたときにエラーが出るときの対処法等についてご説明しました。

今回のエラーはかなりの長文で分かりづらく、しかも肝心なビルド時に発生するので初心者の方など慣れていない人はとても困ってしまうのではないでしょうか。しかしこのような時でも冷静になって調べてみれば対処法がありますので、まずは諦めずにそれらを試していただればと思います。

この記事がゲーム制作のお役に立てば幸いです。