LoginSignup
1
1

More than 3 years have passed since last update.

【Unity】 AudioManagerの作り方

Last updated at Posted at 2019-05-21

解説(一部修正あり:詳しくは追加へ)
https://youtu.be/0cms8lI8XEA

AudioManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AudioManager : MonoBehaviour
{
    [SerializeField] AudioClip[] seList;

    AudioSource audioSource;

    static AudioManager Instance = null; // staticをつけると別のファイルからでもアクセスできる

    public static AudioManager GetInstance()
    {
        if (Instance == null)
        {
            Instance = FindObjectOfType<AudioManager>(); // AudioManager.csのついたオブジェクトを探して代入する
        }
        return Instance;
    }
    private void Awake()
    {
        if (this != GetInstance())
        {
            // 探してきたオブジェクトが自分自身じゃなければ破壊する(AudioManager.csのついたオブジェクトは1つのみになる)
            Destroy(this.gameObject);
            return;
        }
        audioSource = GetComponent<AudioSource>();
        DontDestroyOnLoad(this.gameObject);
    }

    public void PlaySound(int index)
    {
        audioSource.PlayOneShot(seList[index]);
    }
}

利用方法

seListに音源を設定
・音を鳴らしたい場所でAudioManager.GetInstance()PlaySound(0)のコードを書く

追加

音量にスライダーの値を設定していた。(スライダーはシーンが変わると破壊され、戻ってくると初期の値をとるため毎回同じ値をとる=音量変えたのに変わらない現象)

    void Start()
    {
        AudioManager.GetInstance().PlayBGM(0);
        OnChangedBGMSlider();
        OnChangedSESlider();
    }

以下の関数を追加して、スライダーに音量を設定すればOK

    void Start()
    {
        AudioManager.GetInstance().PlayBGM(0);
        InitBGMSliderView();
        InitSESliderView();
    }

    public void InitBGMSliderView()
    {
        bgmSlider.value = AudioManager.GetInstance().BGMVolume;
        bgmVolumeText.text = string.Format("{0:0.00}", bgmSlider.value);
    }
    public void InitSESliderView()
    {
        seSlider.value = AudioManager.GetInstance().SEVolume;
        seVolumeText.text = string.Format("{0:0.00}", seSlider.value);
    }
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1