【Unity】3分で作る音量調整バー

はじめに

なるべく早くかつなにも考えずに作れる音量調整バーの作り方を紹介します。

なお今回のやり方ではBGMとSEを別に調整することはできないので unity1weekなど、雑でいいからすぐに用意したい人向けのものになります。

作成環境はUnity2019.3.0です

作成方法

1.sliderの作成

まずは音量調整用のsliderを作成します。

f:id:Brave345:20200507215621p:plain

2.音量調整用スクリプトの作成

音量調整用スクリプトの作成をします。 以下のコードのコピペすれOKです

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//Sliderを使用するために必要

[RequireComponent(typeof(Slider))]
public class SoundSlider : MonoBehaviour
{

    Slider m_Slider;//音量調整用スライダー

    [SerializeField]
    bool m_isInput;//キー入力で調整バーを動かせるようにするか
    [SerializeField]
    float m_ScroolSpeed = 1;//キー入力で調整バーを動かすスピード
    void Awake()
    {
        m_Slider = GetComponent<Slider>();
        m_Slider.value = AudioListener.volume ;
    }

    private void OnEnable()
    {
        m_Slider.value = AudioListener.volume;
        //スライダーの値が変更されたら音量も変更する
        m_Slider.onValueChanged.AddListener((sliderValue) => AudioListener.volume = sliderValue);
    }

    private void OnDisable()
    {
        m_Slider.onValueChanged.RemoveAllListeners();
    }
    //キー入力による操作 いらないなら削除してもOK
    void Update()
    {
        float v = m_Slider.value;
        if (m_isInput)
        {
            if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
            {
                v -= m_ScroolSpeed * Time.deltaTime;
            }
            if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.RightArrow))
            {
                v += m_ScroolSpeed * Time.deltaTime;
            }
        }
        v = Mathf.Clamp(v, 0, 1);
        m_Slider.value = v;
    }


}

3.完成

作成したスクリプトをsliderオブジェクトにアタッチすれば完成です。

あとは自分の表示したいタイミングで表示すればOKです

isInputをオンにするとキーボードでも音量調節ができます

f:id:Brave345:20200507215449p:plain

現在設定されている音量の確認方法はこちら

bravememo.hatenablog.com

4.Q&A

Q スライダーが反応しない 

A シーン上にEvent Systemがあるか確認してください