'NSInvalidArgumentException',原因:'Resource beep.wav can not be loaded' iOS Sprite 套件

'NSInvalidArgumentException', reason: 'Resource beep.wav can not be loaded' iOS Sprite Kit

我正在使用 Sprite Kit (Objective-C) 为 iPad 制作游戏。

我经常使用下面的代码(例如):

[self runAction:[SKAction playSoundFileNamed:@"beep.wav" waitForCompletion:YES]];

一切顺利,直到一段时间后我的应用程序崩溃并且我突然收到以下错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Resource beep.wav can not be loaded'

我不知道为什么,因为错误之前可以正确加载和播放声音。

同样的错误也可能发生在其他声音上,但总是在一段时间后发生。

有什么想法吗?

您应该尝试预加载声音并在您的控制器中保留对动作的引用。

@property (strong, nonatomic) SKAction *playMySound;

并初始化它:

self.playMySound = [SKAction playSoundFileNamed:@"beep.mp3" waitForCompletion:NO];

并使用它:

[self runAction:playMySound]

您将保留对操作的引用,并避免每次播放声音时都重新加载文件。