2011-08-22 25 views
0

我想要做的是创建一个可重用的音频类,它不会分配/释放除ints初始化/销毁之外的资源。在MonoTouch中创建一个声音fx的单个实例,为什么音频对性能有害?

所以,一类如:

class SoundInst 
{ 
    public SoundInst(string sounddir); 
    public bool IsPlaying; 
    public void Play(float volume); 
    public void Stop(); 
} 

请问这样的事情的原因是,我发现在运行创建音频是一个慢得的事情。我的游戏在没有音频的情况下运行速度稳定在60fps,但即使在同一帧中创建并播放一个或两个声音,音频也会降至15fps以下。

我发现的不是声音本身,而是放慢速度,而是创造它们。我可以同时运行很多声音并保持循环,并且对性能没有影响。

关于解决这个问题的任何想法?

+0

? – xuzhe

回答

1

我不确定单声道触摸,但如果你只是在游戏中使用音频,我会看看AV基础框架,更具体的avaudioplayer。这是我用于我的游戏。它将允许您异步加载音乐,这将有助于解决您的性能下降问题。

的链接框架:我不使用MonoTouch的,但有没有像`prepareToPlay`可用于预加载声音文件时,你的游戏加载一些事情http://developer.apple.com/library/ios/#documentation/AVFoundation/Reference/AVFoundationFramework/_index.html%23//apple_ref/doc/uid/TP40008072

+0

我可以在C++中获得该框架吗? – tweetypi

+0

不幸的是,你不能。如果你试图让一个音频引擎在许多不同的平台上工作,这将不会在任何可可之间移植。 – Kaiser