ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2023ǯ09·î15Æü(¶â) 13:25:06ÍúÎò
¡¡Unity¤Ë¤ª¤¤¤Æ²»³Ú¤ÎºÆÀ¸¤Ë¤ÏAudioSource¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬ÍѤ¤¤é¤ì¤Þ¤¹¡£AudioClip¤ËºÆÀ¸¤·¤¿¤¤BGM¤äSE¤òÀßÄꤷ¤Æ¡¢ºÆÀ¸¤ò¤µ¤»¤ë¼ê½ç¤Ç¤¹¡£
¤³¤Î¼êË¡¤Ç¤¹¤È¡¢³Æ¥·¡¼¥ó¤ËBGMÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÍÑ°Õ¤·¤¿¤ê¡¢¤Þ¤¿³Æ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤´¤È¤ËSEÍѤÎAudioSource¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¥¢¥¿¥Ã¥Á¤·¤ÆÀßÄꤹ¤ë¤¿¤á
¿¤¯¤Î¼ê´Ö¤¬¤«¤«¤ë¤À¤±¤Ç¤Ï¤Ê¤¯¡¢¤É¤³¤Ç²¿¤Î²»¸»¤Î´ÉÍý¤ò¹Ô¤Ã¤Æ¤¤¤ë¤Î¤«ÉÔÆ©ÌÀ¤Ë¤Ê¤ê¡¢Á´ÂÎŪ¤Ë²»¸»¤Ë¤Ä¤¤¤ÆÈÑ»¨¤Ë¤Ê¤ê¤¬¤Á¤Ç¤¹¡£
¡¡SoundManager¤Ï¤½¤ì¤é¤Î²»¸»¤Ë¤«¤«¤ï¤ë½èÍý¤ò°ì¼ê¤Ë°ú¤¼õ¤±¤Æ¡¢²»¸»¥Õ¥¡¥¤¥ë¤Î´ÉÍý/ÅÐÏ¿¡¢²»¸»¤ÎºÆÀ¸/Ää»ß¤ò¤µ¤»¤ë¤¿¤á¤Î´ÉÍýÍѤΥ¯¥é¥¹¤Ç¤¹¡£
ºîÀ®¤¹¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ï¥×¥í¥¸¥§¥¯¥ÈÁ´ÂΤǣ±¤Ä¤ÇºÑ¤à¤è¤¦¤Ë¤Ê¤ê¡¢ºÆÀ¸¤Ê¤É¤Î½èÍý¤â¤³¤Î¥¯¥é¥¹¤Î¤ß¤Ç¼Â¹Ô¤Ç¤¤Þ¤¹¡£
¡¡¤Þ¤¿SoundManager¤ÏÈÆÍÑ¥¯¥é¥¹¤Ç¤¹¡£°ìÅÙ¥¹¥¯¥ê¥×¥ÈºîÀ®¤¹¤ì¤Ð¡¢Â¾¤Î¤¹¤Ù¤Æ¤Î¥×¥í¥¸¥§¥¯¥È¤ÇÍøÍѤ¬²Äǽ¤Ç¤¹¡£
¡¡ÆâÍÆŪ¤Ë¤Ï¡¢²»¸»ºÆÀ¸ÍѤÎAudioSource¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¡¢BGMÍÑ¡¦SEÍѤȤ¤¤Ã¤¿·Á¤Ç¼ïÊ̤˹ç¤ï¤»¤ÆÊ£¿ôÍÑ°Õ¤·¡¢
¤½¤ì¤é¤ÎAudioClip¤ÎÉôʬ(ÌĤ餹¤Ù¤²»¸»)¤ò¡¢¾õ¶·¤Ë¹ç¤ï¤»¤Æ¥×¥í¥°¥é¥à¤«¤éº¹¤·Âؤ¨¤ÆºÆÀ¸¤·¤Æ¤¯¤ì¤ë¤È¤¤¤¦¥í¥¸¥Ã¥¯¤Ç¤¹¡£
¡¡°Ê²¼¤Î¼ê½ç¤Ç¼ÂÁõ¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡£±¡¥SoundManager¥¹¥¯¥ê¥×¥È¤òºîÀ®¤¹¤ë ¡¡£²¡¥SoundManager¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¡¢SoundManager¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤¹¤ë ¡¡£³¡¥Enum¤ÎÅÐÏ¿ÊýË¡¡¢²»¸»¤ÎÅÐÏ¿ÊýË¡ ¡¡£´¡¥ºÆÀ¸/Ää»ß½èÍý¤Î¼Â¹ÔÊýË¡ ¡¡£µ¡¥AudioMixer¤Ë¤Ä¤¤¤Æ
¡¡SoundManager¤È¤¤¤¦¡¢BGM¤äSE¤ò¤Þ¤È¤á¤Æ´ÉÍý¤¹¤ë¥¯¥é¥¹¤òºîÀ®¤·¤Þ¤¹¡£C#Script ¤òºîÀ®¤·¡¢Ì¾Á°¤òSoundManager¤ËÊѹ¹¤·¤Þ¤¹¡£
¡¡¤³¤Á¤é¤Î¥¯¥é¥¹¤Ï¥·¥ó¥°¥ë¥È¥ó¡¦¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¥·¥ó¥°¥ë¥È¥ó¤Ë¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤¤¤º¤ì¤Î¥¯¥é¥¹¤«¤é¤Ç¤âBGM¤äSE¤ÎºÆÀ¸¤òÌ¿Îᤷ¤ä¤¹¤¤À߷פˤ·¤Æ¤¤¤Þ¤¹¡£
¡¡¥·¥ó¥°¥ë¥È¥ó¤È¤Ï¡¢¿ô¿¤¯¤¢¤ë¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤Î£±¤Ä¤Ç¤¹¡£¤½¤Î¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤¬É¬¤º£±¤Ä¤Ç¤¢¤ë¤³¤È¤òÊݾڤ¹¤ë¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤Î¤³¤È¤ò¸À¤¤¤Þ¤¹¡£
¡¡SoundManager¥¯¥é¥¹¤Ç¤Ï¡¢¤³¤Î¥·¥ó¥°¥ë¥È¥ó¤òºÎÍѤ·¤Æ¤¤¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¥²¡¼¥àÃæ¤òÄ̤¸¤Æ¡¢¤³¤ÎSoundManager¥¯¥é¥¹¤¬£±¤Ä¤·¤«Â¸ºß¤Ç¤¤Ê¤¤¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¼ÂÁõÎã¤ÏÊ£¿ô¤¢¤ê¤Þ¤¹¤¬¡¢°ìÈÖÆɤߤ䤹¤¤Êý¼°¤Çµ½Ò¤·¤Æ¤¤¤Þ¤¹¡£
¡¡¤³¤Î¥·¥ó¥°¥ë¥È¥ó¤Ë¤è¤Ã¤Æ¥¤¥ó¥¹¥¿¥ó¥¹¤¬£±¤Ä¤«À¸À®¤µ¤ì¤Ê¤¤¤³¤È¤¬Êݾڤµ¤ì¤Þ¤¹¤Î¤Ç¡¢¤³¤ÎSoundManager¥¯¥é¥¹¤Ø¤Î»²¾È¤Ï¡¢¤¤¤º¤ì¤Î¥¯¥é¥¹¤«¤é¤Ç¤¢¤Ã¤Æ¤âÊÑ¿ô¤ò²ð¤µ¤º¤Ë»²¾È¤ò¹Ô¤¨¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡Î㤨¤Ð¡¢Enemy¤È¤¤¤¦¥¯¥é¥¹¤¬¤¢¤ê¡¢¤½¤ÎEmeny¥¯¥é¥¹¤ò»ý¤Ä¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬£µ¤Ä¤¢¤Ã¤¿¾ì¹ç¡¢¡Ö¤É¤Î¡×Enemy¥¯¥é¥¹¤Ç¤¢¤ë¤«¤ò³ÎÄê¤Ç¤¤Ê¤¤¤È¡¢ÂоݤȤʤëEnemy¥¯¥é¥¹¤Ø¤Ï»²¾È¤Ç¤¤Þ¤»¤ó¡£
¤½¤Î¤¿¤á¡¢Enemy·¿¤ÎÊÑ¿ô¤òÍÑ°Õ¤·¤Æ¡¢¤½¤ÎÊÑ¿ô¤Ø»²¾È¤·¤¿¤¤Enemy¥¯¥é¥¹¤òÂåÆþ¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤Ï¤¸¤á¤ÆEnemy¥¯¥é¥¹¤Î¾ðÊó¤ò°·¤¦¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¤Ç¤¹¤¬¥·¥ó¥°¥ë¥È¥ó¤Ç¤¢¤ë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); } } }
¡¡¥Ò¥¨¥é¥ë¥¡¼¾å¤Ç±¦¥¯¥ê¥Ã¥¯¤·¡¢Create Empty ¤òÁªÂò¤·¤Þ¤¹¡£¶õ¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬ºîÀ®¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢SoundManager¤Ë̾Á°¤òÊѤ¨¤Þ¤¹¡£
¡¡ProjectÆâ¤ÎSoundManager¥¹¥¯¥ê¥×¥È¤ò¥É¥é¥Ã¥°¥¢¥ó¥É¥É¥í¥Ã¥×¤·¤Æ¡¢SoundManager¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤·¤Þ¤¹¡£
¥Ò¥¨¥é¥ë¥¡¼²èÁü(ñÂΤǥҥ¨¥é¥ë¥¡¼¤ËÇÛÃÖ¤¹¤ë)

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

¡¡ËÁƬ¤Ë¤â½Ò¤Ù¤Þ¤·¤¿¤è¤¦¤Ë¡¢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();
¡¡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...
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°
¥³¥á¥ó¥È¤ò¤«¤¯