Unity2017製アプリをMacOSで起動すると、黒い画面でフリーズし何も表示されない問題の解決方法(音声入力コンポーネントに注意)

Unityアプリを起動すると特定の環境で「起動後ブラックスクリーンになりフリーズする」問題が発生しました。この記事は、その問題の発生原因と解決策についてまとめたものです。

環境

問題の現象

対象のUnityアプリは他のMac環境では正常に動作するが、上記のMac環境でUnityアプリを起動すると、Unityアプリ自体は起動するものの、Unityのスプラッシュスクリーンロゴ表示後、アプリウィンドウ画面が真っ黒になり、正常にUnityアプリが起動しない現象が発生。

アクティビティモニターで確認をすると、Unityアプリ起動後、10秒程度で「応答なし」状態になり、Unity製アプリがフリーズする。

トラブルシューティングの手順

原因は「マイクを使ったコンポーネント」がアタッチされ、マイクが2台以上接続され、音声入力が外部デバイスのときに発生する

その後詳細な調査をした結果、ブラックスクリーンで応答なしになる原因はマイクを使ったコンポーネントにあることがわかりました。それも、MacOSで内蔵マイク1つのみを使っているときは問題ないが、内蔵マイクの他に音声入力デバイスが1つ以上追加され、そのデバイスから音声入力しているときに発生することがわかりました。

解決策

解決策としては、2つありました。

  1. 音声入力を、内蔵マイクに切り替える。→ 可能であれば、この方法が一番簡単。
  2. Macのミキサーアプリ「 LadioCastをインストールし、標準入力、標準出力デバイスを設定する。

Mac内蔵のマイクよりも高性能な外部マイクを常用している場合、LadioCast を使って、そのデバイスを標準入力と標準出力にするのが最適でしょう。

まとめ

現象がどのような条件で再現するか不明確であったため、原因を特定するまでにかなり苦労しました…。

Unity2017製アプリ + MacOS + 黒い画面でフリーズし何も表示されない問題が発生するときは、

  1. そのアプリが音声入力コンポーネントを使っていないか?
  2. アプリの実行環境で、複数の音声入力デバイスが存在していないか?

をチェックしてみて下さい。特に、Oculus Lipsync Unity や MMD4Mecanim LipSync Plugin などのリップシンクを使っている場合は注意が必要です。

本記事が、同様のトラブルが発生して困っている方の役に立てば幸いです。