2016-11-21 72 views
2

在SpriteKit(對於那些不熟悉它的人),有一種方法來加載和卸載場景,以及它們之間的過渡(視覺)。場景過渡的聲音,沒有口吃

我試圖在場景之間進行合理的播放,因爲它們過渡......沒有口吃。

到目前爲止,我已經試過可以創建沒有聲音或聲音斷斷續續,甚至使用聲音管理器,像這樣的所有方式:

import AVFoundation 
import SpriteKit 

open class SoundManager { 

    static let soundStart = SKAction.playSoundFileNamed("ActionBeep_AP1.7", waitForCompletion: true) 


    static var coinSound = NSURL(fileURLWithPath:Bundle.main.path(forResource: "ActionBeep_AP1.7", ofType: "wav")!) 
    static var audioPlayer = AVAudioPlayer() 
    open static func playCoinSound(){ 
     guard let soundToPlay = try? AVAudioPlayer(contentsOf: coinSound as URL) else { 
      fatalError("Failed to initialize the audio player with asset: \(coinSound)") 
     } 
     soundToPlay.prepareToPlay() 
     self.audioPlayer = soundToPlay 
     self.audioPlayer.play() 
    } 


} 

人有任何的成功使場景轉換聲音流暢運行?我意識到在場景轉換過程中會發生很多事情,這可能不會幫助聲音引擎。但是認爲在場景轉換過程中必須有一種清晰的聲音播放方式。

是的,我已經嘗試過.caf和.mp3和.wav文件,所有這些文件都有不同的「壓縮」和原始狀態。我認爲這就是我如何播放這些問題的聲音,而不是文件類型。

+0

你是否正在過渡之前調用它?嘗試在應用啓動時預加載歌曲,而不是在嘗試播放之前。像這樣的東西http://stackoverflow.com/questions/40296793/cannot-stop-background-music-from-within-game-scenes-swift-3-spritekit/40361443#40361443 – crashoverride777

回答

1

正如crashoverride777所說,您需要在加載聲音管理器時進行更改。你可以建立一個線程在didMoveToView()功能,以儘量減少加載時間:

DispatchQueue.global(qos: .userInitiated).async { 
    // Load your sound stuff 
} 

現在,你已預裝只要你需要它的聲音文件,滯後自由。