かばちんのエンジニアブログ

日々の経験の中で培った内容を備忘録も兼ねて記録していくブログです。少しでも誰かの役に立つために頑張って続けていけたらなと思います。

Unity 5.5 バージョンアップに伴うエラー解消事例

f:id:kabatin:20170209114218p:plain

Unity バージョンアップ時エラー解消について

Unity 5.3.5p8 から Unity 5.5.1p2 にバージョンアップした際に発生したエラーの解消方法のメモです。

事の発端

Unity 5.5.1p2 へアップデートしてもろもろの動作確認を行っていたところ、PC 上では正常に動作が確認できた。
念のため実機でも確認しておこうと思い APK ファイルを作成して実行してみたところ Unity ロゴが出る以前の段階で
画面が真っ暗な状態のままフリーズ。

原因調査

adb logcat で E/Unity を grep しながらログを確認したところ以下のようなエラーが発生していた。

E/Unity   (XXXXX): Unable to find AudioPluginOculusSpatializer

ネットで検索

"Unable to find AudioPluginOculusSpatializer" というキーワードでいろいろ検索すると海外サイトが多数ヒット。
しかし、具体的な解決策は見つからずに途方にくれていたところ、Unity 上で OculusSpatializer という文言にたどり着く。
[Editor] → [Project Settings] → [Audio] から AudioManager を表示すると、Spatializer Plugin というプルダウンがある。
その中に Oculus Sptializer というのがあったので、これを選択した状態で再度ビルドを試みてみた。

が、失敗。

Unity 上で発生していたエラー

着目点を少し変えて Unity を起動した直後に表示されていた以下のエラーを調査。
[XX] の部分の数字が数パターンあり、いくつかのプラグインが正しく読み込めていないような感じ。

InitializeUnityExtensions: Must have a valid path for the plugin [XX]
Extension was not registered, that means it relies on default UnityExtensions settings, please register extension and apply necessary settings for it in the callback.


いろいろ検索した結果、以下のサイトを参考に [Reimport All] を試したところ無事解消!
fantom1x.blog130.fc2.com


エラー解消手順

Unity エディターの Project ウィンドウ上で右クリックし、[Reimport All] を実行する。
自分の場合は Unity がクラッシュして落ちたけど、再起動したらアセットの再読み込みが始まり無事に起動。
InitializeUnityExtensions のエラーも消えており、この状態で APK を作成して実機確認したところ正常に動作した。

もしくは、試してはいないが Library フォルダを一度全削除して再起動することでも直ると思われる。


原因

公式な文書は見つけられなかったので完全に推論にはなってしまうが、
Unity ではバージョン間でのキャッシュファイルのフォーマット差があるので、そのキャッシュが悪さしていたのではないかと思う。

最新の Unity で発生している事象なので同じような状況の方の手助けに少しでもなれば幸いです。