tanaka's Programming Memo

プログラミングについてのメモ。

Unity2019のWebGLビルドのエラー対策

f:id:am1tanaka:20190628215704p:plain

UnityのWebGLビルドではあれこれやられていましたが、ついに最後の砦を攻略できました。既知の問題はニムサイトさんに詳しいです。

nimushiki.com

日本語が含まれず、保存先が自分のドキュメント下で、最近の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がブロックされているという警告が表示されます。

f:id:am1tanaka:20190628212408p:plain
node.exeをブロックしたとの警告

この時に、うっかりキャンセルをクリックしたのが原因です。これにより、node.exeはブロックするものとWindowsが理解してしまうため、それ以降のビルドは無条件にエラーになっていたのでした。

ということで、手動でnode.exeの動作を許可すれば解決します!!

確認したバージョン

  • Unity2019.1.5
  • Windows10

解決手順

操作には、管理者権限が必要です。

  • Windowsメニューから設定を開きます

f:id:am1tanaka:20190628211857p:plain
設定を開く

  • 更新とセキュリティをクリックします

f:id:am1tanaka:20190628212603p:plain
更新とセキュリティをクリック

  • Windowsセキュリティをクリックします

f:id:am1tanaka:20190628212705p:plain
Windowsセキュリティ

f:id:am1tanaka:20190628212755p:plain
ファイアウォールとネットワーク保護

f:id:am1tanaka:20190628212841p:plain
ファイアウォールによるアプリケーションの許可

  • 設定の変更ボタンをクリックします

f:id:am1tanaka:20190628213034p:plain
設定の変更

  • Nキーを押して、Node.jsの設定を見つかった場合
    • 詳細をクリックします

f:id:am1tanaka:20190628214132p:plain
詳細を確認

  • 対象のUnityのバージョンのフォルダーかを確認します。以下のようになっていれば、Unity2019.1.5でWebGLビルドが成功するはずです

f:id:am1tanaka:20190628214201p:plain
パスを確認

  • 対象のUnityフォルダーのNode.jsの前のチェックが外れていたら、チェックしてください

f:id:am1tanaka:20190628214352p:plain
チェック

Node.jsの設定があった場合、ここまでの設定でビルドが通るようになります。

Node.jsの設定がなかったり、パスが別のバージョンのものしかなかったりする場合は、続けて設定します。

Node.jsの設定がない場合

  • 別のアプリの許可ボタンをクリックします

f:id:am1tanaka:20190628213124p:plain
別のアプリの許可

  • 参照をクリックします

f:id:am1tanaka:20190628213833p:plain
アプリの追加の参照

  • 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です。

f:id:am1tanaka:20190628213953p:plain
登録完了

この設定をしてもエラーが出る場合

既知の問題が原因と思われます。以下を確認してみてください。

  • Unityのプロジェクトが、日本語を含むパスの下にあったら、全て半角英数のみのパスに移動する
  • Unityのプロジェクト内に、日本語ファイルがあったら、全て半角英数にリネームする
  • Unityのプロジェクトが、自分のドキュメントフォルダーの外にあったら、ドキュメントフォルダーの下に移動する
  • Unityを一度閉じて、プロジェクトを開き直してビルドしなおす(結構これで成功することがあります)

なんだかんだで日本語パスと日本語ファイル名が一番のネックです。PC用ビルドなどは通ってしまうので、安心しているとWebGLでコケますのでご注意を!!

参考URL

nimushiki.com