2011-12-22 2 views
5

저는 매우 유용한 Begginers 튜토리얼을 http://www.riemers.net/eng/Tutorials/XNA/Csharp/series2d.php으로 실행했으며 그 결과에 만족합니다. 때 발사 soundeffect을한다XNA 음향 효과로 시스템 속도가 느려짐

if (keybState.IsKeyDown(Keys.Enter) || keybState.IsKeyDown(Keys.Space)) 
     { 
      if (!rocketFlying) launch.Play(); 
      rocketFlying = true;  
      ... 
     } 

:

그러나, 나는 음향 효과를 위해 3 개 .WAV 파일을 사용하여, 게임이 대량으로 둔화되는 것으로 나타났습니다, 나는 코드의이 비트를 적응 버튼을 누르면 업데이트 방법이 60 번 초를 확인하므로 빠르게 버튼을 누르기가 어렵 기 때문에 한 번만 재생됩니다.

그러나 게임은 여전히 ​​속도가 느려지므로 분명히 이상적이지는 않습니다.

분명히, 나는이 특별한 게임으로 무엇이든하려하지 않고 있지만, 미래 프로젝트를 위해이 문제를 어떻게 해결할 것인지, 그리고 그것은 단지 자극적이기 때문에. 여기 건배 라이언

+1

이것이 문제를 해결할 수 있을지 모르겠지만 코드를 살펴보면 마지막 KeyboardState가 해당 버튼을 표시하는지 확인하거나 버튼을 누를 때까지 지연을 구현할 수 있습니다. – annonymously

+0

시스템에서 반복되는 키를 끄고 다시 시도하십시오. 그걸 수정하면 앱이 한 번만 듣더라도 의도 한 것보다 더 자주 사운드를 재생하려고하는 어딘가에 있습니다. – jefflunt

답변

0

문제입니다 : 당신이 60 fps로 실행중인 말한다. 1 초 동안 키를 길게 누르면 사운드 효과가 60 번 울립니다 (아이소 키 다운 만 체크하면 잠시 눌렀는지 확인해야합니다.)

so 뭔가에, 당신은 당신이 당신의 XACT 프로젝트에 들어가는 첫 기자

2)에 방출하고 큐의 최대 인스턴스, 또는 범주를 제한

1) : 당신은 몇 가지 솔루션을 가지고 합리적인 (3은 좋은 번호이며, 가장 오래된 것으로 교체 함)

1 번 유혹을받을 수는 있지만 은 가장 좋은 해결책은 # 2입니다. 전 세계적으로 사운드 방출을 적절하게 제한하는 방법을 소개하고 알고있을 때 할 수있는 멋진 xact 관련 자료가 많이 있습니다. (피치를 바꾸거나 무작위로 다른 사운드를 선택하는 등).

+0

다음은 정확하게 수행하는 방법을 보여주는 기사입니다. http://xna-uk.net/blogs/offbyone/archive/2010/03/26/sound-in-xna-3-1-part-ii.aspx 더하기, 내가 언급 한 다른 멋진 xact 기능에 대한 설명이 포함되어 있습니다. – JasonS

+0

그냥 개인적으로 나는 아마 둘 다 할 것입니다. 동등한 중요성 때문에 게임에서 발생하는 특정 이벤트를 잡는 방법을 배우는 것입니다. 그러나 대단한 대답, +1 –

관련 문제