8

When I run this code.

runAction(SKAction.playSoundFileNamed("Click.mp3", waitForCompletion: false))

My app was Crashed:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Resource Click.mp3 cannot be found in the main bundle'

Mr. Developer
  • 3,295
  • 7
  • 43
  • 110
VIẾT NAM
  • 135
  • 2
  • 3

3 Answers3

17

verify that the file exists in the project. instantiates the variables in the file first and then make a method for breeding.

if the file exists in the project you should do the following:

var sound = SKAction.playSoundFileNamed("sound.mp3", waitForCompletion: false)
...
override func didMoveToView(view: SKView) {
    playSound(sound)
    //call playSound method when you want
}

func playSound(sound : SKAction)
{
    runAction(sound)
}

in this mode don't crash

Myxtic
  • 5,679
  • 5
  • 48
  • 69
Mr. Developer
  • 3,295
  • 7
  • 43
  • 110
2

This may be the answer some people are looking for:

Audio files DO NOT go in Assets.xcassets!

I've had the same issue, and tried seemingly every slight code change as suggested by various StackOverflow answers, but nothing worked.

I only found this one answer that solved my issue: I had been adding my sound files to Assets.xcassets, where my graphics are. It turns out you need to add them to the project bundle (where the .swift files are, etc) — just drag the files to the Project Navigator list on the left of the screen.

Not sure why it's like this as it seems intuitive to include sound files as "Assets".

Joseph
  • 691
  • 4
  • 18
0

I had this exact problem for the last hour! I had to go a different route, because I tried multiple things to get this simple line of code to work and failed. It's a little more code, but this solved my problem: https://stackoverflow.com/a/24073071/586204.

Community
  • 1
  • 1
brilliantairic
  • 816
  • 11
  • 20