2011-12-22 7 views
5

http://www.riemers.net/eng/Tutorials/XNA/Csharp/series2d.php adresinde yer alan çok kullanışlı yardımcı eğitmenleri inceledim ve sonuçtan oldukça memnunum. zaman fırlatma SoundEffect oynarXNA Ses Efektleri sistemi ağır bir şekilde yavaşlatıyor

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

:

Ancak, ses efektleri için 3 .wav dosyalarını kullanarak, oyun kitlesel yavaşladı fark etmiş, ben bu kod biraz adapte var düğmesine basıldığında, güncelleme yöntemi saniyede 60 kez kontrol edildikten sonra, bu tuşa hızlıca basmak zordur, bu yüzden şimdi sadece bir kez oynatılır. Bununla birlikte, oyun hala kitlesel olarak yavaşlatır, bu da ideal olarak ideal değildir.

Açıkçası, bu özel oyunla hiçbir şey yapmaya çalışmıyorum, ancak gelecekteki projeler için bu sorunun nasıl çözüleceğini bilmek istiyorum ve biraz rahatsız edici olduğu için. Burada Alkış Ryan

+1

Sorununuzun çözülüp çözülmeyeceğini bilmiyorum, ancak bu koda bakarak, son KeyboardState öğesinin bu düğmelerin görüntülenip görüntülenmeyeceğini veya düğmeyi ne zaman basabildiğiniz arasında gecikme olup olmadığını kontrol etmeniz gerekir. – annonymously

+0

Sisteminizde tuş yinelemeyi kapatın ve tekrar deneyin. Bunu düzeltirse, uygulamanızın bir yerde yalnızca bir kez duyuyor olsanız bile, amaçlanandan daha sık ses çalmaya çalışıyor. – jefflunt

cevap

0

sorun şudur: 60 fps'de çalışan söylüyor. anahtarı 1 saniye basılı tutarsanız, ses efektiniz 60 kez ateşlenir (yalnızca kontrol ediyor olduğunuzu unutmayın. IKeyDown, sadece bir kez basıldığını kontrol etmek için sadece bir kez kontrol etmek için, aşağı değil)

şeye, yalnızca sizin xact projeye gitmek ilk basın

2) üzerine yayarlar ve suflen maksimum örneklerini, ya da kategori sınırlamak

1): bir kaç çözümler var Makul (3, en eski değiştirenin kullanıldığı iyi bir sayıdır)

# 1, numaranızı çıkarmak isteyebilirsiniz. En iyi çözüm, küresel olarak ses emisyonlarını doğru bir şekilde nasıl sınırlayacağınız konusunda sizi bilgilendirdiği için, en iyi çözüm # 2 (zift, diğer sesleri rastgele seç, vb.).

+0

Tam olarak bunun nasıl yapıldığını gösteren bir makale: http://xna-uk.net/blogs/offbyone/archive/2010/03/26/sound-in-xna-3-1-part-ii.aspx plus, bahsettiğim diğer şık xact özelliklerinin açıklamalarını içerir. – JasonS

+0

Sadece şahsen her ikisini de yaparım. Eşit derecede önem verdiği için, oyunda meydana gelen belirli olayların nasıl ele geçirileceğini öğrenmek gerekir. Ama harika cevap, +1 –