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

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

  • MacOSX 10.11 (El Capitan)または、MacOSX 10.12 (Siella)
  • Unity 2017.3.1f1 で開発、ビルドしたUnity製MacOSXアプリケーション

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

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

  • GPUドライバの不具合の可能性 ⇒ nVidia公式サイトから、MacOS用のドライバをダウンロードし適用したが改善せず。
  • OSバージョンが原因の可能性 ⇒ El Capitan、Siella ともにクリーンインストールを行ったが改善せず。どちらの環境でも、クリーンインストール直後はUnityアプリが正常に起動したが、その数時間後に起動を試してみると同様の問題が発生した。
  • Player.log ファイルの内容を確認する。MacOSの場合、
    ~/Library/Logs/Unity/Player.log

    に保存されています。

  • Player.log を確認しても、これといった異常は見当たりませんでした。

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

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

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

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

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

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

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

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

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

コメントを入力:
G U A Z I