SpriteKit游戏中运行SKAction后调用函数的实现咨询
在SpriteKit中运行SKAction后调用自定义函数的方法
嘿,这个需求其实很容易实现,有几种简洁的方式可以满足你的要求,我来给你详细说明:
方法一:直接传递函数名
因为你的actionDone()函数的签名(无参数、无返回值)正好和run(_:completion:)方法里completion参数要求的() -> Void类型完全匹配,所以你可以直接把函数名作为参数传进去:
let node = SKSpriteNode() // 先定义一个示例动作,比如移动 let moveAction = SKAction.moveBy(x: 150, y: 0, duration: 1.5) // 运行动作,完成后直接调用actionDone node.run(moveAction, completion: actionDone) // 你的自定义完成函数 func actionDone() { print("SKAction执行完成啦!") // 这里写你需要的后续逻辑 }
方法二:使用尾随闭包(更灵活)
如果需要在动作完成时除了调用actionDone(),还要额外执行一些临时逻辑,或者你更习惯闭包的写法,可以用尾随闭包的形式,在闭包里调用你的自定义函数:
node.run(moveAction) { self.actionDone() // 类中使用时需要加self(Swift 5+部分场景可省略,但加上更稳妥) // 这里可以添加其他完成后要执行的代码,比如节点状态更新、音效播放等 }
两种方法都能达到你要的效果,选哪种取决于你的场景和编码习惯~
内容的提问来源于stack exchange,提问作者Louis Eppler
相关产品推荐
相关产品推荐

