前回iPhoneで起動しない問題が解決したことで、ようやくスマホでも3Dコンテンツを閲覧することが可能になりました。しかし、喜んでいたのもつかの間。さらに重大な問題が発覚…。
効果音が再生されない!
ようやくiPhoneでも起動するようになったんですが、今度はmp3ファイルで設定した効果音が出ていないとの報告が!緊急ですべてのプラットフォームで効果音が再生されているかの確認を行うことにしました。
結果的にWindows、Androidでは問題なかったものの、iPhoneに加えMac OSでも効果音が再生されていなかった!これApple製品が全滅してるよなぁ!
ブラウザによる自動再生ブロックが原因?
このままでは一部の環境でスマートホームを体験することができない!この問題が解決しないようであれば、企画凍結も待ったなしの深刻な事態。
調査する過程で、効果音がならないのはブラウザ側のMedia Engagement Index(MEI)という仕組みが悪さをしている可能性が高まった。MEIは音声ファイルなどユーザーが意図しない自動再生を停止する目的があるようだが、これのおかげでUnity WebGLのコンテンツで音が出ないことがあるようだ。
対策法として見つけたもの
簡単に言えばユーザーがあらかじめコンテンツをクリックするなど、意図した再生であることをブラウザに認識させればいいのだ。対策について調べたところ、UnityのC#関数からブラウザ側のスクリプトを呼び出すことでそれを実現できそうだった。
しかし試そうとしたものの、この仕組みを含めるだけで出力時にエラーが出てしまい実験することすら許されず。いったいどうすればいいというのだ…。
Unityエディタのアップデートで修正された!
先ほどの方法以外にユーザーとUnity側の音声再生処理に介入する方法がまったくなく、途方に暮れていたところ…。なんとUnityエディタ側のアップデートによって、あっさり問題が解決してしまった。
リリースノート(2018.3.9)によれば「WebGL: FIxed audio not working Safari after Apple added auto-play restrictions (requires clicking on content to enable audio). 」と記載されており、Appleのsafariブラウザに追加された自動再生制限への対応をおこなったとのことだ。このおかげで問題なくApple製品で効果音が再生されるぞ!!
一難去ってまた一難
効果音再生についての問題は解決したのだが、今度は”光がない”との報告…。この状態を正確に表現すると、光源として設置したライトが何も照らしてくれないのだ。しかも、これまたApple製品だけ…。一難去ってまた一難となってしまいましたが、次回はこの問題を解決していきます。