Game Programming/XNA

XNA :: XNA Game Studio 4.0 # 5 - 사운드 출력

VallistA2015. 4. 22. 15:32

 

 

벌써 XNA의 다섯번째 글이다.

XNA의 기능중 오디오 출력 기능이 있는데, 이 기능은 확장자를 대부분 포함한다. 물론 우리가 최근에 쓰는 것은 포함을 안하지만 (mp3 라던지)

지원하는 기능이 있다는 것 만으로도 굉장히 쉽게 음악을 출력할 수 있는 것이다.

 

먼저 준비해야 할 것이 있다.

사운드 파일을 저작권이 있기 때문에 내가 올리는 것은 불가능 하며, 우리가 각자 뿌릴 음원파일이 있어야한다.

 

소스파일을 보도록 하자.

그전에도 그랫듯 매우 간단하다.

 

 

 

 

이 두개에 대해 먼저 역할을 알아야 한다.

 

SoundEffect 클래스는 직접적인 사운드에 관한 오브젝트이며,

SoundEffectInstance 클래스는 직접적인 사운드에 대해 API를 제공하는 인스턴스라고 보면 된다.

 

SoundEffect 클래스 자체도 Play 함수가 존재하지만, 중지, 재개, 스톱등의 함수가 필요한 작업이 있으므로 SoundEffectInstance 를 선언하여 도와준다고 생각을 하면 된다.

 

예제의 소스코드는 사운드 파일을 등록하고, 인스턴싱하여 인스턴싱 한 오브젝트를 볼륨조절, 재생을 거친다.

우리가 주요로 볼 부분은 LoadContent() 부분이다.

 

 

SoundEngine에 넣을 오디오 컨텐츠를 컨텐츠 목록에서 불러오고

인스턴스에 SoundEngine오브젝트를 넣어준다.

 

여기서 주의할 점은 SoundEngine 오브젝트를 Play 시에는 계속 인스턴스에 넣어줘야 한다는 것 이다.

아니면 에러가 난다. 그 이유는 인스턴스가 이미 사용되고 있는데 거기에 계속 넣어주므로 에러가 난다.

 

추가적으로 Instance 에서 사용할 수 있는 메서드를 보도록 하자.

 

 - Play

 플레이 함수는 말그대로 재생을 시켜준다. 인자가 필요 없으며 인스턴스에 등록된 사운드를 출력해주는 역할을 한다.

 

 - Stop

 스톱 함수도 말 그대로 재생되고 있는 사운드를 정지한다.

 

 - Volume(float)

 볼륨은 소수점으로 조절을 하며, 0.5 면 절반의 사운드 크기를 나타내며 각각의 소리에 맞게 조절을 해주면 되겠다.

 

 - Pause

 퍼지 함수는 사용하면 멈추게 되는데, 사운드를 정지하는게 아닌 다시 재생이 되게끔 일시적으로 멈추는 것이다.

 스톱 함수와 차이는 스톱 함수는 재생된 구간을 캔슬하고 처음 구간으로 돌아가지만 퍼지는 재생된 구간 부터 시작한다는 차이가 있다.

 

 - Resume

 리썸 함수는 사용하면 멈추게 된 시점부터 음악을 시작한다.

 Resume과 Pause는 서로 사용 가능하지만,

 Stop과 Resume은 사용이 불가능 하다.

 

 - IsLooped

 isLooped 변수는 반복해서 음원을 돌릴때 필요하다.

 배경음악이나 효과음의 반복을 위해 사용한다.

 

댓글

VallistA

병특이 끝나서 게임에서 웹으로 스위칭한 프로그래머.
프로그래밍 정보등을 공유합니다.
현재는 이 블로그를 운영하지 않습니다.
vallista.kr 로 와주시면 감사하겠습니다!

자고 싶습니다. ㅠㅠ

Github      :: 링크

궁금한점 문의 주시면 답변드리도록 하겠습니다

VISITED

Today :

Total :

SNS

  • 페이스북아이콘
  • 카카오톡아이콘
  • 트위터아이콘

Lately Post

Lately Comment