MacのUnityで空エラーがでた場合の対処方法(Unity2019.3.0f5)


概要

Unity2019.3.0f5をMacで起動したら、以下のような空のエラーが発生してビルドできなくなりました。

この投稿は、その対処法になります。

動作環境

  • Unity2019.3.0f5
  • Mac OSX Catalina 10.15.2

Windowsの場合

Windowsの場合も、同じようなエラーが起きてたみたいです。
その場合は以下のやり方でなおるそうです。

今回の対応も似たようなやり方です。

本題

とりあえず原因を特定させるためにEditor.logを確認します。

-----CompilerOutput:-stdout--exitcode: 137--compilationhadfailure: True--outfile: Temp/UnityEngine.UI.dll
-----CompilerOutput:-stderr----------
Failed to initialize CoreCLR, HRESULT: 0x80004005
-----EndCompilerOutput---------------

以下のようなエラーがでてた場合Unityの中にある「csc」ファイルが何らかの理由で正常に動作しなくなってるっぽいです。
(本当はそれをなおしたかったけど断念…)

というわけで、応急処置

対象のUnityの「パッケージの内容を表示」とすると、ディレクトリ内部にアクセスできます。
そこから、 Contents -> Tools -> RoslynScripts -> unity_csc.sh を編集します。

と、その前にMacの中にcscがあるか確認。
このcscは、C#のコンパイラだそうです。

cscがあるか探す
$ find /Library/Frameworks -name csc
/Library/Frameworks/Mono.framework/Versions/5.18.0/bin/csc
/Library/Frameworks/Mono.framework/Versions/5.18.0/Commands/csc
/Library/Frameworks/Mono.framework/Versions/6.6.0/bin/csc
/Library/Frameworks/Mono.framework/Versions/6.6.0/Commands/csc
/Library/Frameworks/Mono.framework/Versions/5.16.0/bin/csc
/Library/Frameworks/Mono.framework/Versions/5.16.0/Commands/csc

ない場合はどうするべきかはわかりません。
あれば、以下のように書き換えたら動くようになります。

unity_csc.shの23行目あたり
#eval "\"$CSC_NET_CORE\" /shared "$@"" #コメントアウト
eval "\"/Library/Frameworks/Mono.framework/Versions/Current/bin/csc\" /shared "$@"" #書き換え

これで、ぼくは動くようになりました。
よかったよかった(´・ω・`)