AudioMixer の SetFloat は Awake では動作しない
AudioMixer SetFloat
AudioMixer のボリュームを設定する時に Awake で SetFloat して初期化しようとした所,動かなかった. 原因としてはこれ.
昔からある問題.
解決方法
Start () で呼ぶのが単純な解決方法だが, Awake () を使わざるを得ない時がある. その場合は,await UniTask.Yield(PlayerLoopTiming.LastInitialization); を挟んでから, AudioMixer の SetFloat をすると動きます.以下サンプルスクリプト.参考までに.
public async UniTaskVoid Awake() { // AudioMixer.SetFloat は Awake 段階では発動しないバグがあるため,タイミング調整 await UniTask.Yield(PlayerLoopTiming.LastInitialization); // マスター音量を設定する audioMixer.SetFloat(VolumeNameConstants.MASTER_VOLUME, masterVolume); }
参考資料
Unity の Audio 機能はこちらの資料を読めば完璧. スライドに書いてあるリポジトリもコードリーディングするとなおよし.
www.slideshare.net