音量をスライダーで調節して保存する(音量設定)|Unityゲーム制作

Unityで音量調整をスライダーを利用して行う方法を実装していきます。

はじめに

Unityのバージョンは2021.3.14f1で実装していきます。

初めに、好きな音源をUnityに取り込んでおきます。今回はBGMとして、音量調整を実装していきます。

実装開始

音源をセットして、音量調節を実装した後に、スライダーでの実装、設定の保存を行っていきます。

音源をBGMとしてセットする

「Audio」→「AudioSource」を追加します。

AudioClipにBGMをセットします。

実行するとセットした音楽が流れます。Volumeを変更すると音量が変わります。

スクリプトで実装

音量の変更をスクリプトで実装してみます。下記はキーボードの「↑」で音量を上げて、「↓」で音量を下げています。

using UnityEngine;

public class AudioManager : MonoBehaviour
{
    private AudioSource bgm;

    private void Start()
    {
        bgm = GetComponent<AudioSource>();
    }

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.UpArrow))
            bgm.volume += 0.1f;

        if (Input.GetKeyDown(KeyCode.DownArrow))
            bgm.volume -= 0.1f;
    }
}

AudioSourceにスクリプトを追加して実行します。キーボード入力で音量が変わればOKです。

スクリプトは下記のようにしても同じように動作します。

using UnityEngine;

public class AudioManager : MonoBehaviour
{
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.UpArrow))
            AudioListener.volume += 0.1f;

        if (Input.GetKeyDown(KeyCode.DownArrow))
            AudioListener.volume -= 0.1f;
    }
}

下記が「AudioSource」、「AudioListener」の公式スクリプトリファレンスです。

スライダーで音量を調整

次にスライダーで調整するのを実装します。「UI」→「Slider」を追加します。

スクリプトを下記に変更します。スライダーの値をボリュームにセットしています。

using UnityEngine;
using UnityEngine.UI;

public class AudioManager : MonoBehaviour
{
    [SerializeField] private Slider bgmSlider;

    private void Start()
    {
        AudioListener.volume = bgmSlider.value;
    }

    public void ChangeVol()
    {
        AudioListener.volume = bgmSlider.value;
    }
}

スクリプトのパラメータにスライダーをセットします。

Sliderの「OnValueChanged」に「ChangeVol()」をセットします。

これでスライダーと連動した音量になります。

設定の保存

スライダーでセットした音量を保存して次回は保存した音量を呼び出す場合、スクリプトは下記のような感じになります。

using UnityEngine;
using UnityEngine.UI;

public class AudioManager : MonoBehaviour
{
    [SerializeField] private Slider bgmSlider;

    private void Start()
    {
        bgmSlider.value = PlayerPrefs.GetFloat("bgmVolume", 1);
    }

    public void ChangeVol()
    {
        AudioListener.volume = bgmSlider.value;
        PlayerPrefs.SetFloat("bgmVolume", bgmSlider.value);
    }
}

playerprefsで設定を保存する詳しい記事は下記で書いてます。

タイトルとURLをコピーしました