[Memo-Unity] 16. Sound
์นดํ ๊ณ ๋ฆฌ: MeMo Unity
ํ๊ทธ: C#, MeMo Unity
Sound
Sound
1. ์ฌ์ด๋
SoundManager
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SoundManager : MonoBehaviour
{
public static SoundManager instance;
[SerializeField][Range(0f, 1f)] private float soundEffectVolume;
[SerializeField][Range(0f, 1f)] private float soundEffectPitchVariance;
[SerializeField][Range(0f, 1f)] private float musicVolume;
private ObjectPool objectPool;
private AudioSource musicAudioSource;
public AudioClip musicClip;
private void Awake()
{
instance = this;
musicAudioSource = GetComponent<AudioSource>();
musicAudioSource.volume = musicVolume;
musicAudioSource.loop = true;
objectPool = GetComponent<ObjectPool>();
}
private void Start()
{
ChangeBackGroundMusic(musicClip);
}
public static void ChangeBackGroundMusic(AudioClip music)
{
instance.musicAudioSource.Stop();
instance.musicAudioSource.clip = music;
instance.musicAudioSource.Play();
}
public static void PlayClip(AudioClip clip)
{
GameObject obj = instance.objectPool.SpawnFromPool("SoundSource");
obj.SetActive(true);
SoundSource soundSource = obj.GetComponent<SoundSource>();
soundSource.Play(clip, instance.soundEffectVolume, instance.soundEffectPitchVariance);
}
}
SoundSource
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SoundSource : MonoBehaviour
{
private AudioSource _audioSource;
public void Play(AudioClip clip, float soundEffectVolume, float soundEffectPitchVariance)
{
if (_audioSource == null)
_audioSource = GetComponent<AudioSource>();
CancelInvoke();
_audioSource.clip = clip;
_audioSource.volume = soundEffectVolume;
_audioSource.Play();
_audioSource.pitch = 1f + Random.Range(-soundEffectPitchVariance, soundEffectPitchVariance);
Invoke("Disable", clip.length + 2);
}
public void Disable()
{
_audioSource.Stop();
gameObject.SetActive(false);
}
}
public AudioClip damageClip;
if (damageClip)
SoundManager.PlayClip(damageClip);
damageClip
์ ๋ฆฌ
[Unity] Sound
TOP
๋๊ธ๋จ๊ธฐ๊ธฐ