Unity¤Ë´ØÏ¢¤¹¤ëµ­»ö¤Ç¤¹

SoundManager¥¯¥é¥¹¤ÎÀ߷ס¡¡Á¥²¡¼¥àÆâ¤Î²»¸»¤ò°ì¸µ´ÉÍý¤¹¤ëÊýË¡¡Á //


¡¡Unity¤Ë¤ª¤¤¤Æ²»³Ú¤ÎºÆÀ¸¤Ë¤ÏAudioSource¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬ÍѤ¤¤é¤ì¤Þ¤¹¡£AudioClip¤ËºÆÀ¸¤·¤¿¤¤BGM¤äSE¤òÀßÄꤷ¤Æ¡¢ºÆÀ¸¤ò¤µ¤»¤ë¼ê½ç¤Ç¤¹¡£
¤³¤Î¼êË¡¤Ç¤¹¤È¡¢³Æ¥·¡¼¥ó¤ËBGMÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÍÑ°Õ¤·¤¿¤ê¡¢¤Þ¤¿³Æ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤´¤È¤ËSEÍѤÎAudioSource¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¥¢¥¿¥Ã¥Á¤·¤ÆÀßÄꤹ¤ë¤¿¤á
¿¤¯¤Î¼ê´Ö¤¬¤«¤«¤ë¤À¤±¤Ç¤Ï¤Ê¤¯¡¢¤É¤³¤Ç²¿¤Î²»¸»¤Î´ÉÍý¤ò¹Ô¤Ã¤Æ¤¤¤ë¤Î¤«ÉÔÆ©ÌÀ¤Ë¤Ê¤ê¡¢Á´ÂÎŪ¤Ë²»¸»¤Ë¤Ä¤¤¤ÆÈÑ»¨¤Ë¤Ê¤ê¤¬¤Á¤Ç¤¹¡£

¡¡SoundManager¤Ï¤½¤ì¤é¤Î²»¸»¤Ë¤«¤«¤ï¤ë½èÍý¤ò°ì¼ê¤Ë°ú¤­¼õ¤±¤Æ¡¢²»¸»¥Õ¥¡¥¤¥ë¤Î´ÉÍý/ÅÐÏ¿¡¢²»¸»¤ÎºÆÀ¸/Ää»ß¤ò¤µ¤»¤ë¤¿¤á¤Î´ÉÍýÍѤΥ¯¥é¥¹¤Ç¤¹¡£
ºîÀ®¤¹¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ï¥×¥í¥¸¥§¥¯¥ÈÁ´ÂΤǣ±¤Ä¤ÇºÑ¤à¤è¤¦¤Ë¤Ê¤ê¡¢ºÆÀ¸¤Ê¤É¤Î½èÍý¤â¤³¤Î¥¯¥é¥¹¤Î¤ß¤Ç¼Â¹Ô¤Ç¤­¤Þ¤¹¡£


¡¡¤Þ¤¿SoundManager¤ÏÈÆÍÑ¥¯¥é¥¹¤Ç¤¹¡£°ìÅÙ¥¹¥¯¥ê¥×¥ÈºîÀ®¤¹¤ì¤Ð¡¢Â¾¤Î¤¹¤Ù¤Æ¤Î¥×¥í¥¸¥§¥¯¥È¤ÇÍøÍѤ¬²Äǽ¤Ç¤¹¡£


¡¡ÆâÍÆŪ¤Ë¤Ï¡¢²»¸»ºÆÀ¸ÍѤÎAudioSource¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¡¢BGMÍÑ¡¦SEÍѤȤ¤¤Ã¤¿·Á¤Ç¼ïÊ̤˹ç¤ï¤»¤ÆÊ£¿ôÍÑ°Õ¤·¡¢
¤½¤ì¤é¤ÎAudioClip¤ÎÉôʬ(ÌĤ餹¤Ù¤­²»¸»)¤ò¡¢¾õ¶·¤Ë¹ç¤ï¤»¤Æ¥×¥í¥°¥é¥à¤«¤éº¹¤·Âؤ¨¤ÆºÆÀ¸¤·¤Æ¤¯¤ì¤ë¤È¤¤¤¦¥í¥¸¥Ã¥¯¤Ç¤¹¡£


¼ÂÁõ¼ê½ç


¡¡°Ê²¼¤Î¼ê½ç¤Ç¼ÂÁõ¤ò¹Ô¤¤¤Þ¤¹¡£

¡¡£±¡¥SoundManager¥¹¥¯¥ê¥×¥È¤òºîÀ®¤¹¤ë
¡¡£²¡¥SoundManager¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¡¢SoundManager¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤¹¤ë
¡¡£³¡¥Enum¤ÎÅÐÏ¿ÊýË¡¡¢²»¸»¤ÎÅÐÏ¿ÊýË¡
¡¡£´¡¥ºÆÀ¸/Ää»ß½èÍý¤Î¼Â¹ÔÊýË¡
¡¡£µ¡¥AudioMixer¤Ë¤Ä¤¤¤Æ


£±¡¥SoundManager¥¹¥¯¥ê¥×¥È¤òºîÀ®¤¹¤ë


¡¡SoundManager¤È¤¤¤¦¡¢BGM¤äSE¤ò¤Þ¤È¤á¤Æ´ÉÍý¤¹¤ë¥¯¥é¥¹¤òºîÀ®¤·¤Þ¤¹¡£C#Script ¤òºîÀ®¤·¡¢Ì¾Á°¤òSoundManager¤ËÊѹ¹¤·¤Þ¤¹¡£

¡¡¤³¤Á¤é¤Î¥¯¥é¥¹¤Ï¥·¥ó¥°¥ë¥È¥ó¡¦¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¥·¥ó¥°¥ë¥È¥ó¤Ë¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤¤¤º¤ì¤Î¥¯¥é¥¹¤«¤é¤Ç¤âBGM¤äSE¤ÎºÆÀ¸¤òÌ¿Îᤷ¤ä¤¹¤¤À߷פˤ·¤Æ¤¤¤Þ¤¹¡£


¡ã¥·¥ó¥°¥ë¥È¥ó¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¡ä


¡¡¥·¥ó¥°¥ë¥È¥ó¤È¤Ï¡¢¿ô¿¤¯¤¢¤ë¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤Î£±¤Ä¤Ç¤¹¡£¤½¤Î¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤¬É¬¤º£±¤Ä¤Ç¤¢¤ë¤³¤È¤òÊݾڤ¹¤ë¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤Î¤³¤È¤ò¸À¤¤¤Þ¤¹¡£

¡¡SoundManager¥¯¥é¥¹¤Ç¤Ï¡¢¤³¤Î¥·¥ó¥°¥ë¥È¥ó¤òºÎÍѤ·¤Æ¤¤¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¥²¡¼¥àÃæ¤òÄ̤¸¤Æ¡¢¤³¤ÎSoundManager¥¯¥é¥¹¤¬£±¤Ä¤·¤«Â¸ºß¤Ç¤­¤Ê¤¤¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¼ÂÁõÎã¤ÏÊ£¿ô¤¢¤ê¤Þ¤¹¤¬¡¢°ìÈÖÆɤߤ䤹¤¤Êý¼°¤Çµ­½Ò¤·¤Æ¤¤¤Þ¤¹¡£

¡¡¤³¤Î¥·¥ó¥°¥ë¥È¥ó¤Ë¤è¤Ã¤Æ¥¤¥ó¥¹¥¿¥ó¥¹¤¬£±¤Ä¤«À¸À®¤µ¤ì¤Ê¤¤¤³¤È¤¬Êݾڤµ¤ì¤Þ¤¹¤Î¤Ç¡¢¤³¤ÎSoundManager¥¯¥é¥¹¤Ø¤Î»²¾È¤Ï¡¢¤¤¤º¤ì¤Î¥¯¥é¥¹¤«¤é¤Ç¤¢¤Ã¤Æ¤âÊÑ¿ô¤ò²ð¤µ¤º¤Ë»²¾È¤ò¹Ô¤¨¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡Î㤨¤Ð¡¢Enemy¤È¤¤¤¦¥¯¥é¥¹¤¬¤¢¤ê¡¢¤½¤ÎEmeny¥¯¥é¥¹¤ò»ý¤Ä¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬£µ¤Ä¤¢¤Ã¤¿¾ì¹ç¡¢¡Ö¤É¤Î¡×Enemy¥¯¥é¥¹¤Ç¤¢¤ë¤«¤ò³ÎÄê¤Ç¤­¤Ê¤¤¤È¡¢ÂоݤȤʤëEnemy¥¯¥é¥¹¤Ø¤Ï»²¾È¤Ç¤­¤Þ¤»¤ó¡£
¤½¤Î¤¿¤á¡¢Enemy·¿¤ÎÊÑ¿ô¤òÍÑ°Õ¤·¤Æ¡¢¤½¤ÎÊÑ¿ô¤Ø»²¾È¤·¤¿¤¤Enemy¥¯¥é¥¹¤òÂåÆþ¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤Ï¤¸¤á¤ÆEnemy¥¯¥é¥¹¤Î¾ðÊó¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¤Ç¤¹¤¬¥·¥ó¥°¥ë¥È¥ó¤Ç¤¢¤ëSoundManager¥¯¥é¥¹¤Î¾ì¹ç¤Ë¤Ï¡¢¤³¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ï¾ï¤Ë£±¤Ä¤·¤«¤Ê¤¤¤³¤È¤¬Êݾڤµ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¡Ö¤É¤Î¡×¤È¤¤¤¦»ØÄê¤ÎÉôʬ¤¬ÉÔÍפˤʤê¤Þ¤¹¡£
¤Ä¤Þ¤êÊÑ¿ô¤Ø¤ÎÂåÆþ¤¬ÉÔÍפˤʤê¤Þ¤¹¡£
SoundManager¤È¤¤¤¦»ØÄê¤Ï¤¹¤Ê¤ï¤Á¡¢¼«Æ°Åª¤Ë¤¿¤À£±¤Ä¤ÎSoundManager¤Ø¤Î»²¾È¤¬¹Ô¤ï¤ì¤Þ¤¹¡£


SoundManager ¥¹¥¯¥ê¥×¥È¤òºîÀ®¤¹¤ë


¡¡À߷פǤ¹¤¬¡¢AudioClip¡ÊÌĤ餷¤¿¤¤²»¸»¡Ë¤ò¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¾å¤ÇÅÐÏ¿¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Æ¤ª¤¤¤Æ¡¢¤½¤ì¤òŬµ¹AudioSourse¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ÎAudioClip¤Ë¥¢¥µ¥¤¥ó¤·¤Æ»ÈÍѤ¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
Î㤨¤ë¤Ê¤é¡¢AudioClip¤ÏCD(²»¸»)¤Ç¤¢¤ê¡¢AudioSourse¤¬CD¥×¥ì¥¤¥ä¡¼(ºÆÀ¸¥¢¥×¥ê)¡¢AudioSourse¤ÎAudioClip¤ÏºÆÀ¸¤·¤¿¤¤CD¤òÆþ¤ì¤ë¾ì½ê(¥é¥¤¥Ö¥é¥ê)¡¢¤È¤¤¤¦Ìò³ä¤Î¥¤¥á¡¼¥¸¤Ç»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£

¡¡¤Þ¤¿DOTween¤ÎDoFade¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ¡¢BGM¤òÀÚ¤êÂؤ¨¤ëºÝ¤Ë¤Ï¡¢¸½ºßºÆÀ¸Ãæ¤ÎBGM¤Î²»Î̤ò¾®¤µ¤¯¤·¤Ä¤Ä¡¢¤½¤Î´Ö¤Ë¼¡¤ÎBGM¤¬ÌĤê»Ï¤á¤ë¤È¤¤¤¦¡¢¤¤¤ï¤æ¤ë¥¯¥í¥¹¥Õ¥§¡¼¥Éµ¡Ç½¤ò¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤Ã¤ÆµÞ¤ËBGM¤¬ÊѤï¤Ã¤Æ¤·¤Þ¤¦¤³¤È¤òËɤ®¡¢¥Ê¥Á¥å¥é¥ë¤Ê·Á¤ÇBGM¤ÈBGM¤È¤ò·Ò¤²¤ÆÌĤ餹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

using System.Collections;
using UnityEngine;
using DG.Tweening;
using UnityEngine.Audio;

/// <summary>
/// ²»¸»´ÉÍý¥¯¥é¥¹
/// </summary>
public class SoundManager : MonoBehaviour
{
    public static SoundManager instance;

    // BGM´ÉÍý
    public enum BGM_Type
    { 
        // BGMÍѤÎÎóµó»Ò¤ò¥²¡¼¥à¤Ë¹ç¤ï¤»¤ÆÅÐÏ¿

        SILENCE = 999,        // ̵²»¾õÂÖ¤òBGM¤È¤·¤ÆºîÀ®¤·¤¿¤¤¾ì¹ç¤Ë¤ÏÄɲ䷤Ƥª¤¯¡£¤½¤ì°Ê³°¤ÏÉÔÍ×
    }

    // SE´ÉÍý
    public enum SE_Type
    {
        // SEÍѤÎÎóµó»Ò¤ò¥²¡¼¥à¤Ë¹ç¤ï¤»¤ÆÅÐÏ¿
    }

    // ¥¯¥í¥¹¥Õ¥§¡¼¥É»þ´Ö
    public const float CROSS_FADE_TIME = 1.0f;

    // ¥Ü¥ê¥å¡¼¥à´ØÏ¢
    public float BGM_Volume = 0.1f;
    public float SE_Volume = 0.2f;
    public bool Mute = false;

    // === AudioClip ===
    public AudioClip[] BGM_Clips;
    public AudioClip[] SE_Clips;

    // SEÍÑAudioMixer  ̤»ÈÍÑ
    public AudioMixer audioMixer;


    // === AudioSource ===
    private AudioSource[] BGM_Sources = new AudioSource[2];
    private AudioSource[] SE_Sources = new AudioSource[16];

    private bool isCrossFading;

    private int currentBgmIndex = 999;

    void Awake()
    {
        // ¥·¥ó¥°¥ë¥È¥ó¤«¤Ä¡¢¥·¡¼¥óÁ«°Ü¤·¤Æ¤âÇË´þ¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¤¹¤ë
        if (instance == null) {
            instance = this;
            DontDestroyOnLoad(gameObject);         
        } else  { 
            Destroy(gameObject);
        }

        // BGMÍÑ AudioSourceÄɲÃ
        BGM_Sources[0] = gameObject.AddComponent<AudioSource>();
        BGM_Sources[1] = gameObject.AddComponent<AudioSource>();

        // SEÍÑ AudioSourceÄɲÃ
        for (int i = 0; i < SE_Sources.Length; i++)
        {
            SE_Sources[i] = gameObject.AddComponent<AudioSource>();
        }
    }

    void Update() 
    {
        // ¥Ü¥ê¥å¡¼¥àÀßÄê
        if (!isCrossFading) {
            BGM_Sources[0].volume = BGM_Volume;
            BGM_Sources[1].volume = BGM_Volume;
        }

        foreach (AudioSource source in SE_Sources)
        {
            source.volume = SE_Volume;
        }
    }

    /// <summary>
    /// BGMºÆÀ¸
    /// </summary>
    /// <param name="bgmType"></param>
    /// <param name="loopFlg"></param>
    public void PlayBGM(BGM_Type bgmType, bool loopFlg = true)
    {
        // BGM¤Ê¤·¤Î¾õÂ֤ˤ¹¤ë¾ì¹ç            
        if ((int)bgmType == 999) {    
            StopBGM();           
            return;                 
        }
 
        int index = (int)bgmType;
        currentBgmIndex = index;

        if (index < 0 || BGM_Clips.Length <= index)
        {
            return;
        }

        // Ʊ¤¸BGM¤Î¾ì¹ç¤Ï²¿¤â¤·¤Ê¤¤
        if (BGM_Sources[0].clip != null && BGM_Sources[0].clip == BGM_Clips[index])  {
            return;
        } else if (BGM_Sources[1].clip != null && BGM_Sources[1].clip == BGM_Clips[index]) {
            return;
        }

        // ¥Õ¥§¡¼¥É¤ÇBGM³«»Ï
        if (BGM_Sources[0].clip == null && BGM_Sources[1].clip == null)  {
            BGM_Sources[0].loop = loopFlg;
            BGM_Sources[0].clip = BGM_Clips[index];
            BGM_Sources[0].Play();
        } else {
            // ¥¯¥í¥¹¥Õ¥§¡¼¥É½èÍý
            StartCoroutine(CrossFadeChangeBMG(index, loopFlg));
        }
    }

    /// <summary>
    /// BGM¤Î¥¯¥í¥¹¥Õ¥§¡¼¥É½èÍý
    /// </summary>
    /// <param name="index">AudioClip¤ÎÈÖ¹æ</param>
    /// <param name="loopFlg">¥ë¡¼¥×ÀßÄê¡£¥ë¡¼¥×¤·¤Ê¤¤¾ì¹ç¤À¤±false»ØÄê</param>
    /// <returns></returns>
    private IEnumerator CrossFadeChangeBMG(int index, bool loopFlg) {
        isCrossFading = true;
        if (BGM_Sources[0].clip != null)  {
            // [0]¤¬ºÆÀ¸¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢[0]¤Î²»Î̤ò½ù¡¹¤Ë²¼¤²¤Æ¡¢[1]¤ò¿·¤·¤¤¶Ê¤È¤·¤ÆºÆÀ¸
            BGM_Sources[1].volume = 0;
            BGM_Sources[1].clip = BGM_Clips[index];
            BGM_Sources[1].loop = loopFlg;
            BGM_Sources[1].Play();
            BGM_Sources[1].DOFade(1.0f, CROSS_FADE_TIME).SetEase(Ease.Linear);
            BGM_Sources[0].DOFade(0, CROSS_FADE_TIME).SetEase(Ease.Linear);

            yield return new WaitForSeconds(CROSS_FADE_TIME);
            BGM_Sources[0].Stop();
            BGM_Sources[0].clip = null;
        } else {
            // [1]¤¬ºÆÀ¸¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢[1]¤Î²»Î̤ò½ù¡¹¤Ë²¼¤²¤Æ¡¢[0]¤ò¿·¤·¤¤¶Ê¤È¤·¤ÆºÆÀ¸
            BGM_Sources[0].volume = 0;
            BGM_Sources[0].clip = BGM_Clips[index];
            BGM_Sources[0].loop = loopFlg;
            BGM_Sources[0].Play();
            BGM_Sources[0].DOFade(1.0f, CROSS_FADE_TIME).SetEase(Ease.Linear);
            BGM_Sources[1].DOFade(0, CROSS_FADE_TIME).SetEase(Ease.Linear);

            yield return new WaitForSeconds(CROSS_FADE_TIME);
            BGM_Sources[1].Stop();
            BGM_Sources[1].clip = null;
        }
        isCrossFading = false;
    }

    /// <summary>
    /// BGM´°Á´Ää»ß
    /// </summary>
    public void StopBGM()
    {
        BGM_Sources[0].Stop();
        BGM_Sources[1].Stop();
        BGM_Sources[0].clip = null;
        BGM_Sources[1].clip = null;
    }

    /// <summary>
    /// SEºÆÀ¸
    /// </summary>
    /// <param name="seType"></param>
    public void PlaySE(SE_Type seType)  {
        int index = (int)seType;
        if (index < 0 || SE_Clips.Length <= index) {
            return;
        }

        // ºÆÀ¸Ãæ¤Ç¤Ï¤Ê¤¤AudioSource¤ò¤Ä¤«¤Ã¤ÆSE¤òÌĤ餹
        foreach (AudioSource source in SE_Sources) {

            // ºÆÀ¸Ãæ¤Î AudioSource ¤Î¾ì¹ç¤Ë¤Ï¼¡¤Î¥ë¡¼¥×½èÍý¤Ø°Ü¤ë
¡¡¡¡¡¡¡¡¡¡¡¡if (source.isPlaying) {
            ¡¡¡¡continue;
        ¡¡¡¡}

            // ºÆÀ¸Ãæ¤Ç¤Ê¤¤ AudioSource ¤Ë Clip ¤ò¥»¥Ã¥È¤·¤Æ SE ¤òÌĤ餹
¡¡¡¡        source.clip = SE_Clips[index];
    ¡¡¡¡    source.Play();
            break;
        }
    }

    /// <summary>
    /// SEÄä»ß
    /// </summary>
    public void StopSE() {
        // Á´¤Æ¤ÎSEÍѤÎAudioSource¤òÄä»ß¤¹¤ë
        foreach (AudioSource source in SE_Sources) {
            source.Stop();
            source.clip = null;
        }
    }

    /// <summary>
    /// BGM°ì»þÄä»ß
    /// </summary>
    public void MuteBGM()
    {
        BGM_Sources[0].Stop();
        BGM_Sources[1].Stop();
    }

    /// <summary>
    /// °ì»þÄä»ß¤·¤¿Æ±¤¸BGM¤òºÆÀ¸(ºÆ³«)
    /// </summary>
    public void ResumeBGM()
    {
        BGM_Sources[0].Play();
        BGM_Sources[1].Play();
    }


////* ̤»ÈÍÑ *////


    /// <summary>
    /// AudioMixerÀßÄê
    /// </summary>
    /// <param name="vol"></param>
    public void SetAudioMixerVolume(float vol)
    {
        if (vol == 0)
        {
            audioMixer.SetFloat("volumeSE", -80);
        }
        else
        {
            audioMixer.SetFloat("volumeSE", 0);
        }
    }
}


£²¡¥SoundManager¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¡¢SoundManager¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤¹¤ë


¡¡¥Ò¥¨¥é¥ë¥­¡¼¾å¤Ç±¦¥¯¥ê¥Ã¥¯¤·¡¢Create Empty ¤òÁªÂò¤·¤Þ¤¹¡£¶õ¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬ºîÀ®¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢SoundManager¤Ë̾Á°¤òÊѤ¨¤Þ¤¹¡£

¡¡ProjectÆâ¤ÎSoundManager¥¹¥¯¥ê¥×¥È¤ò¥É¥é¥Ã¥°¥¢¥ó¥É¥É¥í¥Ã¥×¤·¤Æ¡¢SoundManager¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤·¤Þ¤¹¡£


¥Ò¥¨¥é¥ë¥­¡¼²èÁü(ñÂΤǥҥ¨¥é¥ë¥­¡¼¤ËÇÛÃÖ¤¹¤ë)



SoundManager¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü



£³¡¥Enum¤ÎÅÐÏ¿ÊýË¡¡¢²»¸»¤ÎÅÐÏ¿ÊýË¡

¡¡
¡¡ËÁƬ¤Ë¤â½Ò¤Ù¤Þ¤·¤¿¤è¤¦¤Ë¡¢SoundManager¥¯¥é¥¹¤ÏÈÆÍÑ¥¯¥é¥¹¤Ç¤¹¡£¤½¤Î¤¿¤á¥×¥í¥¸¥§¥¯¥È¤Ë¹ç¤ï¤»¤¿BGM¤äSE¤Î¼ïÎà¤òÀßÄꤷ¤ÆÅÐÏ¿¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

¡¡¤Þ¤º¥²¡¼¥àÆâ¤Ç»ÈÍѤ¹¤ë²»¸»¤Ë¤Ä¤¤¤Æ¡¢»ÈÍѤ¹¤ë¥·¡¼¥ó¤äSE¤òÌĤ餹¾ì½ê¤Ë¹ç¤ï¤»¤ÆBGM¤ÈSE¤ÎEnumÎóµó»Ò¤òÅÐÏ¿¤·¤Þ¤¹¡£
Î㤨¤Ð¡¢°Ê²¼¤Î¤è¤¦¤ËÅÐÏ¿¤·¤Þ¤¹¡£¤³¤ÎÎóµó»Ò¤ò»ØÄꤷ¤Æ²»¸»¤òºÆÀ¸¤·¤Þ¤¹¡£

    // BGM´ÉÍý
    public enum BGM_Type
    { 
        Title,
        Home,
        Battle
    }

    // SE´ÉÍý
    public enum SE_Type
    {
        OK,
        NG,
        ItemGet,
        Damage
    }

¡¡Îóµó»Ò¤òÅÐÏ¿¤·¤¿¤é¡¢Îóµó»Ò¤ÈƱ¿ô¤ÎAudloClipÇÛÎó¤òSoundManager¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Ë¤ÆÍÑ°Õ¤·¤Þ¤¹¡£
BGM¤ÏBGM_ClipsÊÑ¿ô¡¢SE¤ÏSE_ClipsÊÑ¿ô¤Ç¤¹¡£

¡¡º£²ó¤ÎÎã¤Ç¤Ï¡¢BGM_Clips¤ÎSize 3¡¢SE_Clips ¤ÎSize 4 ¤ÇÍÑ°Õ¤·¤Þ¤¹¡£

BGM_Clips¤ÎSize 0 ¡¢SE_Clips ¤ÎSize 0


¡¡¡¡¡¡¢­

BGM_Clips¤ÎSize 3 ¡¢SE_Clips ¤ÎSize 4



¡¡Unity¤Ë¤Ï»öÁ°¤Ë²»¸»¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥Ý¡¼¥È¤·¡¢Audio¥Õ¥©¥ë¥ÀÆâ¤Ë¥Õ¥©¥ë¥Àʬ¤±¤·¤ÆÍÑ°Õ¤·¤Æ¤ª¤­¤Þ¤¹¡£


Audio¥Õ¥©¥ë¥À¹½À®



¡¡³Æ²»¸»¥Õ¥¡¥¤¥ë̾¤Ï¡¢Îóµó»Ò¤ÈƱ̾¤Ë¤Ê¤ë¤è¤¦¤Ë̾Á°¤òÊѹ¹¤·¤Æ¤ª¤­¤Þ¤¹¡£


Audio/BGM¥Õ¥©¥ë¥À


Audio/SE¥Õ¥©¥ë¥À



¡¡Àè¤Û¤ÉÍÑ°Õ¤·¤¿BGM_ClipsÊÑ¿ô¤ÈSE_ClipsÊÑ¿ô¤ÎÇÛÎó¤ÎÍ×ÁǤˡ¢Enum¤ÇÀßÄꤷ¤¿Îóµó»Ò¤ÈƱ¤¸½çÈ֤Dz»¸»¥Õ¥¡¥¤¥ë¤ò¥¢¥µ¥¤¥ó¤·¤Þ¤¹¡£

¥¢¥µ¥¤¥ó¸å¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü


¡¡¤³¤ì¤Ç»ÈÍѤ¹¤ë½àÈ÷¤Ï´°Î»¤Ç¤¹¡£


£´¡¥ºÆÀ¸/Ää»ß½èÍý¤Î¼Â¹ÔÊýË¡


¡¡SoundManager¤ÎPlayBGM¥á¥½¥Ã¥É¡¢¤¢¤ë¤¤¤ÏPlaySE¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ç²»¸»¤òºÆÀ¸¤Ç¤­¤Þ¤¹¡£
¥·¥ó¥°¥ë¥È¥ó¤Ç¤¹¤Î¤Ç¡¢¥¢¥µ¥¤¥ó¤ÏÉÔÍפǡ¢¤¤¤º¤ì¤Î¥¯¥é¥¹¤«¤é¤Ç¤â°Ê²¼¤ÎÌ¿Îá¤Ç¸Æ¤Ó½Ð¤·¤¬²Äǽ¤Ç¤¹¡£


ºÆÀ¸


¡¡°ú¿ô¤Ë¤½¤ì¤¾¤ì¤ÎEnum¤ò»ØÄꤷ¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢Enum¤ÎÎóµó»Ò¤Î»ØÄê¤òÊѹ¹¤¹¤ì¤Ð¤³¤Î£²¤Ä¤ÎÌ¿Îá¤À¤±¤Ç²»¸»¤òºÆÀ¸¤Ç¤­¤Þ¤¹¡£

BGM¤Î¾ì¹ç
    SoundManager.instance.PlayBGM(SoundManager.BGM_Type.Title);¡¡¡¡¡¡<=¡¡°ú¿ô¤òÊѤ¨¤ë

SE¤Î¾ì¹ç
    SoundManager.instance.PlaySE(SoundManager.SE_Type.OK);¡¡¡¡¡¡¡¡¡¡ <=¡¡°ú¿ô¤òÊѤ¨¤ë

¡¡¤Ê¤ª²»À¼¤òºÆÀ¸¤µ¤»¤ë¾ì¹ç¤Ë¤Ï¡¢Æ±¤¸¤è¤¦¤ËEnum¤ÎVoice_Type¤ÈVoice_ClipsÊÑ¿ô¤òÍÑ°Õ¤¹¤ì¤ÐÂбþ¤Ç¤­¤Þ¤¹¡£


Ää»ß

¡¡
¡¡Ää»ß¤µ¤»¤¿¤¤¾ì¹ç¤Ë¤Ï°Ê²¼¤ÎÌ¿Îá¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

BGM¤Î¾ì¹ç
    SoundManager.instance.StopBGM();

SE¤Î¾ì¹ç
    SoundManager.instance.StopSE();


°ì»þÄä»ß/ºÆ³«

¡¡
¡¡BGM¤Î¤ß¡¢Ää»ß¸å¤ËƱ¤¸BGM¤òºÆÀ¸¤µ¤»¤ë¥á¥½¥Ã¥É¤òÍÑ°Õ¤·¤Æ¤¤¤Þ¤¹¡£

°ì»þÄä»ß
    SoundManager.instance.MuteBGM();


Ʊ¤¸BGMºÆ³«
¡¡MuteBGM¥á¥½¥Ã¥É¼Â¹Ô¸å¤Ë
    SoundManager.instance.ResumeBGM();


£µ¡¥AudioMixer¤Ë¤Ä¤¤¤Æ


¡¡SE¤äBGM¤Î²»Î̤¬¥Ð¥é¥Ð¥é¤Ç¾å¼ê¤¯Ä´À°¤¬½ÐÍè¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢AudioMixerµ¡Ç½¤òÍøÍѤ·¤Þ¤¹¡£(using UnityEngine.Audio ¤Ï¡¢AudioMixer¤Î¤¿¤á¤ÎÀë¸À¤Ç¤¹¡£)
ÀßÄê¤ÏÍÑ°Õ¤·¤Æ¤¤¤Þ¤¹¤¬¼ÂÁõ¤Ï¤·¤Æ¤¤¤Þ¤»¤ó¤Î¤Ç¡¢¤â¤·¤âÄ´À°¤¬¾å¼ê¤¯¤¤¤«¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¤³¤Îµ¡Ç½¤ÎÍøÍѤò¸¡Æ¤¤·¤Æ¤¯¤À¤µ¤¤¡£

¡¡¡¡=>¡¡AudioMixer ¤Îµ¡Ç½¤È³èÍÑÊýË¡
¡¡¡¡¡¡¡¡ AudioMixer ¤Î¼ÂÁõÎã
¡¡¡¡¡¡¡¡ ¥¹¥¯¥ê¥×¥È¤Ë¤è¤ë AudioMixer ¤Î²»ÎÌÀ©¸æÊýË¡



¡¡Â¾¤Ë¤â¿¤¯¤Îµ­»ö¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢»²¹Í¤Ë¼ÂÁõ¤ò¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£¤³¤Á¤é¤Î¥µ¥¤¥ÈÍͤâ¾Ü¤·¤¤¤Ç¤¹¡£

10ANTZ Developers BlogÍÍ
AudioMixer¤ò³èÍѤ·¤Æ¡¢¥µ¥¦¥ó¥ÉÄ´À°¤Î½èÍý
https://developers.10antz.co.jp/archives/609
¥´¥¤¥µ¥®Æüµ­ÍÍ
¡ÚUnity¡Û¥µ¥¦¥ó¥É AudioClip ¤È AudioMixer
https://goisagi-517.hatenablog.com/entry/2019/07/2...
¥¼¥Ë¥¬¥Í¥Ö¥í¥°ÍÍ
¡ÚUnity¡ÛAudioMixer¤ÇÍ·¤ó¤Ç¤ß¤è¤¦¡ª(1/3)
https://zenigane138.hateblo.jp/entry/2018/02/20/22...

¥³¥á¥ó¥È¤ò¤«¤¯


¡Öhttp://¡×¤ò´Þ¤àÅê¹Æ¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ÍøÍѵ¬Ìó¤ò¤´³Îǧ¤Î¤¦¤¨¤´µ­Æþ²¼¤µ¤¤

Menu



´ðÁÃ

µ»½Ñ/Ãμ±(¼ÂÁõÎã)

3D¥¢¥¯¥·¥ç¥ó¥²¡¼¥à

2D¤ª¤Ï¤¸¤­¥²¡¼¥à(ȯŸÊÔ)

2D¶¯À©²£¥¹¥¯¥í¡¼¥ë¥¢¥¯¥·¥ç¥ó(ȯŸÊÔ)

2D¥¿¥Ã¥×¥·¥å¡¼¥Æ¥£¥ó¥°(³ÈÄ¥ÊÔ)

¥ì¡¼¥¹¥²¡¼¥à(È´¿è)

2DÊüÃÖ¥²¡¼¥à(ȯŸÊÔ)

3D¥ì¡¼¥ë¥¬¥ó¥·¥å¡¼¥Æ¥£¥ó¥°(±þÍÑÊÔ)

3Dæ½Ð¥²¡¼¥à(È´¿è)

2D¥ê¥¢¥ë¥¿¥¤¥à¥¹¥È¥é¥Æ¥¸¡¼

3D¥¿¥Ã¥×¥¢¥¯¥·¥ç¥ó(NavMeshAgent »ÈÍÑ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥«¥¨¥ë¤Î°Ù¤Ë¡Á¡¢¥Ü¥³¥¹¥«¥¦¥©¡¼¥ºÉ÷)

VideoPlayer ¥¤¥Ù¥ó¥ÈϢư¤Î¼ÂÁõÎã

VideoPlayer ¥ê¥¹¥ÈÆ⤫¤é¥à¡¼¥Ó¡¼ºÆÀ¸¤Î¼ÂÁõÎã(ȯŸ)

AR ²èÁüÉÕ¤­¥ª¥Ö¥¸¥§¥¯¥ÈÀ¸À®¤Î¼ÂÁõÎã

AR ¥ê¥¹¥ÈÆ⤫¤éÀ¸À®¤Î¼ÂÁõÎã(ȯŸ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥µ¥Ð¥¤¥Ð¡¼É÷)

private



¤³¤Î¥µ¥¤¥ÈÆâ¤ÎºîÉʤϥæ¥Ë¥Æ¥£¤Á¤ã¤ó¥é¥¤¥»¥ó¥¹¾ò¹à¤Î¸µ¤ËÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£

´ÉÍý¿Í/Éû´ÉÍý¿Í¤Î¤ßÊÔ½¸¤Ç¤­¤Þ¤¹