【发布时间】:2016-06-26 21:07:54
【问题描述】:
刚刚使用 Swift 在 iOS 上进入 SpriteKit。我有一个教程中的“Breakout”游戏,我想在每个球发射之前实现倒计时,方法是在屏幕中间放置一个 SKLabel,它从 5 倒数到 1,然后移除自身并开始游戏。在倒计时进行时,您可以看到完整的游戏画面,包括墙壁、固定球等。
我无法确定在游戏循环中的哪个位置执行此操作。如果我在 didMoveToView(我创建墙并初始化球和桨)中进行倒计时,我永远不会看到它,但我会在日志中看到我的调试消息。我猜在 SKScene 出现之前调用了 didMoveToView。
我尝试在第一次调用“更新”时使用标志来调用倒计时函数,但我再次看到在屏幕上出现任何内容之前执行了倒计时 - 我认为在渲染场景之前最初调用了“更新”。
我可以在另一个 SKScene 中实现“点按屏幕开始”屏幕,但我真的希望在屏幕上倒计时,墙壁和(静止的)球准备好了。我可以使用游戏屏幕的背景图像来创建这个倒计时场景,但这似乎很尴尬。
任何建议都非常感谢,
史蒂夫
【问题讨论】:
-
当你在谷歌上寻找解决方案时,这绝不是一个好兆头,而最热门的问题是你自己的问题...
-
每帧只调用一次更新
-
@SteveIves 在下面使用 NSTimers 查看我的解决方案,如果有任何问题,请告诉我。
-
好的 - 这里有一点学习经验。我突然想到为什么我的 SKSpritelabel 倒计时在 didMoveToView 中起作用但在 Update 中不起作用 - 在 Update 中的循环中更新 SKLabel 将不起作用,因为标签不会在迭代之间重新呈现,这与 UIView 中的 UILabel 不同。想想就明白了。
标签: ios swift sprite-kit