【发布时间】:2016-05-07 17:20:51
【问题描述】:
func RunAfterDelay(delay: NSTimeInterval, block: dispatch_block_t) {
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay * Double(NSEC_PER_SEC)))
dispatch_after(time, dispatch_get_main_queue(), block)
}
这个方法在我的游戏场景的辅助类中被调用。我正在关注 TUT,是的,我尝试在当前项目中实现帮助程序类,我是编程新手。我对 GCD 的想法也很陌生,我已经阅读了文档并且知道它有很大的用途......
在我的游戏场景中用在这里:
RunAfterDelay(RandomDouble(min: minDelay, max: maxDelay)) { [unowned self] in
self.createEnemy()
这里也用在同一个场景中:
dispatch_async(dispatch_get_main_queue()) { [unowned self] in
// if(self.backgroundMusic.playing){
我通过使用枚举、案例和公共函数来处理音乐等创建一个全局 swift 文件,找到了声音、BG 音乐和音效的解决方案。看起来像这样我相信每个 Swift 新手都遇到过这:RW 啧啧
public class SKTAudio {
public var backgroundMusicPlayer: AVAudioPlayer?
public var soundEffectPlayer: AVAudioPlayer?
public class func sharedInstance() -> SKTAudio {
return SKTAudioInstance
如果有更好的选择,我正在寻找一种不同的方法,因为它目前正在耗尽我的 CPU,经过几次运行,并且变得非常慢。那是一个不同的问题。我更关心寻找比所列方法更好的方法。
这是一个利用 SpriteKit 和 UIKit 的游戏(出于 UI 原因),我不再使用它,现在我严格使用 SpriteKit。
【问题讨论】:
-
如果你使用 GCD,你需要正确处理并发,就像在所有多线程程序中一样。 GCD 对于长时间运行的独立计算最有用。对于游戏来说,这不是一个好的解决方案。
-
谢谢。非常直接。
-
如果我为游戏场景添加更多代码会有帮助吗?同时我会查看您提供的信息。
标签: swift functional-programming sprite-kit ios9 grand-central-dispatch