我试图在我的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 格式的声音。
- 在设备和模拟器上测试。
但没有播放声音......
有什么想法吗?
答案 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();
(显然首先加载所有声音)