유니티_unity

유니티: AudioSource 컴포넌트, Play PlayOneShot 차이점

코딩ABC 2025. 5. 25. 16:53
반응형

Unity에서 AudioSource 컴포넌트를 사용할 때 Play()와 PlayOneShot()은 모두 오디오를 재생하는 함수이지만, 사용 방식과 동작에 중요한 차이가 있습니다.


✅ Play()

  • 설명: AudioSource에 설정된 AudioClip을 재생합니다.
  • 전제 조건: AudioSource.clip에 오디오 클립이 미리 지정되어 있어야 합니다.
  • 특징:
    • 이전에 재생 중이던 사운드를 중지하고 새로운 사운드를 재생합니다.
    • 같은 AudioSource에서 연속으로 소리를 겹쳐서 재생할 수는 없습니다.
    • loop 설정을 통해 반복 재생이 가능합니다.
AudioSource audioSource = GetComponent();
audioSource.clip = myClip; audioSource.Play();
 

✅ PlayOneShot(AudioClip clip, float volumeScale = 1.0f)

  • 설명: 입력으로 받은 AudioClip을 한 번만 재생합니다.
  • 전제 조건: AudioSource.clip에 설정하지 않아도 됩니다.
  • 특징:
    • 기존에 재생 중인 오디오를 중단하지 않고도 새로운 사운드를 겹쳐서 재생할 수 있습니다.
    • 같은 AudioSource에서 여러 소리를 동시에 겹쳐 재생하는 데 유용합니다.
    • 반복 재생(loop)은 지원하지 않습니다.
    • volumeScale을 통해 볼륨 조절 가능 (1.0 = 기본)
AudioSource audioSource = GetComponent();
audioSource.PlayOneShot(myClip);
 

🎯 요약

기능Play()PlayOneShot()
재생 방식 지정된 clip 재생 인자로 전달된 clip 재생
중첩 재생 불가능 (중지 후 재생) 가능 (겹쳐서 재생)
반복 재생 가능 (loop = true) 불가능
clip 설정 AudioSource.clip 필요 함수 인자로 clip 전달
사용 예 배경음악, 긴 사운드 효과음, 짧은 사운드
 

필요한 상황에 맞게 두 메서드를 선택해서 사용하는 것이 좋습니다. 예를 들어:

  • 배경음악: Play() (loop와 함께)
  • 총소리, 버튼 클릭 등 효과음: PlayOneShot() (짧고 중첩 가능)
반응형