SpriteKit声音没有播放

时间:2014-03-26 15:01:21

标签: ios xamarin.ios xamarin sprite-kit

我试图在我的iOS SpriteKit应用程序中播放声音,如下所示:

var action = SKAction.PlaySoundFileNamed("filename.wav", false);
SKAction.RunAction(action, "action-name");

确认声音文件确实存在,因为PlaySoundFileNamed会抛出异常。
我还可以确认它正在执行某些事情,因为当动作首次执行时应用程序会略微抖动(我知道如何解决这个问题,它只是为了确认它做了什么)。

我尝试过的事情:
- 将waitForCompletion操作的PlaySoundFileName设置为true,而不是false
- 调用AVAudioSession.SharedInstance().SetActive(true, out error)
- 使用 .wav .m4a 格式的声音。
- 在设备和模拟器上测试。

但没有播放声音......
有什么想法吗?

1 个答案:

答案 0 :(得分:1)

仍然没有使用Sprite Kit,但是我使用AVAudioPlayer解决了它。

public class SoundFile
{
    private AVAudioPlayer audioPlayer;

    public SoundFile(string fileName)
    {
        this.FileName = fileName;
    }

    public string FileName { get; set; }

    public bool PreLoaded { get; set; }

    public void PreLoad()
    {
        this.audioPlayer = AVAudioPlayer.FromUrl(new NSUrl(this.FileName));
        this.audioPlayer.CurrentTime = 0;
        this.audioPlayer.NumberOfLoops = 0;
        this.audioPlayer.Volume = 1.0f;
        this.audioPlayer.PrepareToPlay();

        this.PreLoaded = true;
    }

    public void Play()
    {
        if (!this.PreLoaded)
        {
            this.PreLoad();
        }

        Task.Run(() => 
        {
            this.audioPlayer.CurrentTime = 0;
            this.audioPlayer.Play();
        });
    }
}

然后像这样播放:

var sound = new SoundFile("my-filename.wav");
sound.Play();

(显然首先加载所有声音)