我自己也遇到过这个问题。仅供参考,我的解决方案很快,所以如果您仍在使用它,只需将其转换为 Objective C 即可。
对我来说,我的解决方案包括两部分。首先,我必须在场景文件的 didMoveToView 函数中初始化 SoundAction SKAction。所以你的场景文件应该是这样的:
import SpriteKit
import GameKit
import AVFoundation
class GameScene: SKScene, SKPhysicsContactDelegate {
var sSharedShootSoundAction: SKAction = SKAction()
override func didMoveToView(view: SKView) {
/* Setup your scene here */
sSharedShootSoundAction = SKAction.playSoundFileNamed("plane_shoot.aiff", waitForCompletion: false)
}
}
然后,在您的 AppDelegate 文件中,您需要将以下代码行放入应用程序的 didFinishLaunchingWithOptions 函数中。 (不要忘记在您的 AppDelegate 中导入 AVFOUNDATION)。所以你的应用程序委托方法应该像这样:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
// INSERT THIS LINE BELOW.
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient, error: nil)
return true
}
with Swift 4:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryAmbient)
}catch{
// handle error
print("error setting category of audio session")
}
return true
}
希望这能为您解决问题,就像为我解决问题一样!如果没有,请告诉我。