UnityのWebGLビルドではあれこれやられていましたが、ついに最後の砦を攻略できました。既知の問題はニムサイトさんに詳しいです。
日本語が含まれず、保存先が自分のドキュメント下で、最近のUnityであれば大体は問題ないのですが、学校の半数以上のマシンでビルドが通っていませんでした。エラーはil2cpp.exe
がなんちゃらかんちゃら、というやつです。これの原因と対処方法です。
(2019/6/30 エラーの例を追記)
目次
エラーメッセージ
この問題で発生するエラーは以下のようなものです。この後にまだ2つほど続きます。冒頭のエラーに以下のようなil2cpp.exe
が含まれていたら、この問題である可能性があります。
Failed running C:\Program Files\Unity\Hub\Editor\2019.1.5f1\Editor\Data\il2cpp/build/il2cpp.exe --convert-to-cpp --dotnetprofile="unityaot" --compile-cpp --libil2cpp-static --platform="WebGL" --architecture="EmscriptenJavaScript" --configuration="Release" --outputpath="C:\Users\student\Documents\webgl\Assets /../Temp/StagingArea/Data\Native\build.bc" --cachedirectory="C:\Users\student\Documents\webgl\Assets..\Library/il2cpp_cache" --compiler-flags="-Oz -DIL2CPP_EXCEPTION_DISABLED=1 " --emit-method-map --additional-libraries=(中略) --profiler-report --map-file-parser="C:/Program Files/Unity/Hub/Editor/2019.1.5f1/Editor/Data/Tools/MapFileParser/MapFileParser.exe" --directory=C:/Users/student/Documents/webgl/Temp/StagingArea/Data/Managed --generatedcppdir=C:/Users/student/Documents/webgl/Temp/StagingArea/Data/il2cppOutput
原因
最初にWebGLビルドをする際に、以下のようなnode.exeがブロックされているという警告が表示されます。
この時に、うっかりキャンセルをクリックしたのが原因です。これにより、node.exeはブロックするものとWindowsが理解してしまうため、それ以降のビルドは無条件にエラーになっていたのでした。
ということで、手動でnode.exeの動作を許可すれば解決します!!
確認したバージョン
- Unity2019.1.5
- Windows10
解決手順
操作には、管理者権限が必要です。
- Windowsメニューから設定を開きます
- 更新とセキュリティをクリックします
- Windowsセキュリティをクリックします
- ファイアウォールとネットワーク保護をクリックします
- ファイアウォールによるアプリケーションの許可をクリックします
- 設定の変更ボタンをクリックします
N
キーを押して、Node.js
の設定を見つかった場合- 詳細をクリックします
- 対象のUnityのバージョンのフォルダーかを確認します。以下のようになっていれば、Unity2019.1.5でWebGLビルドが成功するはずです
- 対象のUnityフォルダーのNode.jsの前のチェックが外れていたら、チェックしてください
Node.jsの設定があった場合、ここまでの設定でビルドが通るようになります。
Node.jsの設定がなかったり、パスが別のバージョンのものしかなかったりする場合は、続けて設定します。
Node.jsの設定がない場合
- 別のアプリの許可ボタンをクリックします
- 参照をクリックします
- WebGLビルドで使いたいUnityのインストールフォルダー内の
node.exe
を指定します。例えば、デフォルトの場所にインストールしたUnity2019.1.5を指定したい場合は以下の通りですC:\Program Files\Unity\Hub\Editor\2019.1.5f1\Editor\Data\Tools\nodejs\node.exe
- 追加ボタンをクリックします
以上で完了です。以下のようにNode.jsの設定が追加されていればOKです。
この設定をしてもエラーが出る場合
既知の問題が原因と思われます。以下を確認してみてください。
- Unityのプロジェクトが、日本語を含むパスの下にあったら、全て半角英数のみのパスに移動する
- Unityのプロジェクト内に、日本語ファイルがあったら、全て半角英数にリネームする
- Unityのプロジェクトが、自分のドキュメントフォルダーの外にあったら、ドキュメントフォルダーの下に移動する
- Unityを一度閉じて、プロジェクトを開き直してビルドしなおす(結構これで成功することがあります)
なんだかんだで日本語パスと日本語ファイル名が一番のネックです。PC用ビルドなどは通ってしまうので、安心しているとWebGLでコケますのでご注意を!!