PlayOneShot
PlayOneShot 메서드는 오디오 클립을 인자로 받아 해당 사운드를 한 번만 재생할 때 사용된다.
사운드 재생 시 다른 AudioSource의 작업을 방해하지 않는 특징이 있다.
따라서 PlayOneShot 메서드는 현재 AudioSource의 작동 중인 사운드를 중지하지 않고,
새로운 사운드를 재생한다.
이는 다른 사운드가 재생 중인 상태에서 추가적인 사운드를 재생하고자 할 때 유용하다.
재생이 끝나면 자동으로 AudioSource를 정리한다.
따라서 별도의 Stop 메서드 호출이 필요하지 않다.
총 발사 소리, 폭발 효과, 아이템을 주울 때의 사운드 등 특정 이벤트나 행동에 따라
재생되는 사운드를 처리할 때 주로 사용된다.
using UnityEngine;
public class PlayOneShotExample : MonoBehaviour
{
public AudioClip soundClip;
private AudioSource audioSource;
private void Start()
{
audioSource = GetComponent<AudioSource>();
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
// PlayOneShot 함수로 사운드 클립을 재생
audioSource.PlayOneShot(soundClip);
}
}
}
Play
Play 메서드는 AudioSource 컴포넌트가 연결된 게임 오브젝트에서 오디오를 재생한다.
PlayScheduled
PlayScheduled 함수는 특정 시간에 오디오 소스를 재생할 때 사용된다.
예를 들어, 특정 지연 시간 이후에 오디오를 재생하거나 특정 시간에 정확히 오디오를 재생할 수 있다.
using UnityEngine;
public class PlayScheduledExample : MonoBehaviour
{
public AudioClip soundClip;
public double delayTime = 1.0;
private double startTime;
private void Start()
{
// 오디오 소스의 시작 시간을 현재 시간 + 지연 시간으로 설정
startTime = AudioSettings.dspTime + delayTime;
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
// PlayScheduled 함수로 사운드 클립을 지정된 시간에 재생
AudioSource.PlayScheduled(soundClip, startTime);
}
}
}
위 예제 코드에서 AudioSettings.dspTime은 Unity 엔진에서 사용되는
디지털 신호 처리 시간(Digital Signal Processing Time)을 나타내는 속성이다.
이 값은 오디오 엔진의 현재 시간을 초 단위로 표현한 것으로,
오디오의 정확한 재생 타이밍과 시간 기반 오디오 이펙트를 제어하는 데 사용된다.