テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

iOSのスクリーンショット撮影時に音量が一瞬だけ最大になる問題の対策

tsubakit1.hateblo.jp

対策済みみたいです。
長ったらしいタイトルだが、要するにUnity/iOSにはスクリーンショットを最大にすると音量が一瞬だけMaxになるバグがある。

これは実際は「日本で使う端末」というのが絡んでいるらしく、「カメラの撮影音に使うオーディオシステム」と「Unityのオーディオシステム(FMOD)」が干渉することで発生するらしい。

なのでFMODを使っているゲームエンジンは全てこの問題がある。
(例えばインフィニットブレードにイヤホン挿してSS撮影すると大音量になる)


対策としては、
AudioSettings.outputSampleRate = 44100 としておく。

こうすれば、一応は発生しなくなる。とは言え、今度はイヤホンを指している状態で撮影すると音が大音量で鳴ってしまうので、実際完全な対策は無いっぽい。

ちなみにoutputSampleRateを変更すると再生中の音が再生出来なくなるので、音を再生する前(起動直後のシーン)等でやっておくと良い。



もしこの部分が絶対に無くさなければいけない重要な部分の場合、オーディオシステムを自作してネイティブプラグイン経由で動かすしかない。

もしくは「スクリーンショット機能」を内蔵して、そっちから撮影させるか。スクリーンショットを撮影するタイミングは「スコア表示」や「カードの絵柄を表示」する部分が多いと思う。これらの撮影をiPhone基本機能ではなくUnity側でやってしまう事で、大音量化しないようにする。(ついでにTwitterFacebook連携とも絡めたい)

ちなみにFMODは実行中オーディオ関連のシステムに干渉しまくるので、ネイティブプラグインでオーディオシステムを自作するのは勧め出来ない。