コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Unity 2021 以降の WebGL でゲーム開始時に Audio が再生されない場合

概要

Audio Source の Play On Awake をオンにしたり

m_audioSource.Play();

スクリプトから Awake や Start のタイミングで Play 関数を呼び出した場合、
Unity エディタでは正常に Audio が再生されても
WebGL でビルドすると Audio が再生されなくなります

これは、ユーザーの操作を待たずに Audio を自動再生することはできないという
ブラウザの制約によるものです

対策

上記のように Audio Source の Play On Awake をオフにします

そして、以下のようにユーザーの操作を受け付けてから
Play 関数を呼び出すことで Audio が正常に再生されるようになります

using UnityEngine;

public class Example : MonoBehaviour
{
    [SerializeField] private AudioSource m_audioSource;

    private void Update()
    {
        // まだ Audio が再生されておらず
        // かつ何らかのキーかマウスボタンが押された場合
        if ( !m_audioSource.isPlaying && Input.anyKeyDown )
        {
            // Audio を再生する
            m_audioSource.Play();
        }
    }
}