gpt4 book ai didi

swift - SKAction runBlock 似乎没有按预期工作

转载 作者:行者123 更新时间:2023-11-30 12:30:52 25 4
gpt4 key购买 nike

        let randomize = SKAction.runBlock({ [unowned self] in
self.footstepFile = "Content/footstep\(RandomInt(1, max: 4))"
print(self.footstepFile)
})


sprite.runAction(SKAction.repeatActionForever(SKAction.sequence([randomize, SKAction.playSoundFileNamed(footstepFile, waitForCompletion: true)])), withKey: "footsteps")

当这个 Action 运行时,footstepFile 在我打印它时显示它的随机化,但实际上它只是一遍又一遍地播放相同的声音文件。为什么是这样?

只要 Sprite 移动,我就会播放这个 Action ,并在他停止时暂停它。当它暂停和取消暂停 footstepFile 更改时,但如果我连续运行,它只会一遍又一遍地播放相同的内容。运行 block 不应该连续随机化它吗?

最佳答案

我认为问题在于创建 SKAction.sequence 时处于事件状态的 footstepFile 是重复使用的文件。这是因为序列仅创建一次,然后重复使用。

要解决此问题,请尝试创建一个全部使用随机文件名的 playSoundFileNamed 操作数组,并将其传递给 SKAction.sequence:

var actions = [SKAction]()

for _ in 1...16 {
footstepFile = "Content/footstep\(RandomInt(1, max: 4))"
actions.append(SKAction.playSoundFileNamed(footstepFile, waitForCompletion: true))
}

sprite.runAction(SKAction.repeatActionForever(SKAction.sequence(actions)), withKey: "footsteps")

关于swift - SKAction runBlock 似乎没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43575046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com