SpriteKit 动画意外停止

Posted

技术标签:

【中文标题】SpriteKit 动画意外停止【英文标题】:SpriteKit animation stops unexpectedly 【发布时间】:2017-10-08 22:55:25 【问题描述】:

我正在尝试调试 SpriteKit 动画的一个非常奇怪的行为。很容易重现:

    在 Xcode 中创建一个新的游戏项目,保持所有选项不变。 打开 GameScene.swift 并将第 23 行从 label.run(SKAction.fadeIn(withDuration: 2.0)) 更改为 label.run(SKAction.fadeIn(withDuration: 0.2)) 连接您的手机并开始调试会话,观察文本 (Hello, World!) 如何淡入并以全亮度显示。嗯,到目前为止,一切都很好。 从 Xcode 中停止应用程序,然后单击手机上的图标再次启动它。 观察文本虽然可见,但没有完全淡入。

我发现这试图理解为什么我的动画在我的应用程序加载到一半时就停止了。我假设如果某些初始化步骤比动画长,视图会以某种方式停止刷新,但我不知道如何解决这个问题。我还注意到,如果您单击屏幕,它会刷新并且动画视图会以最终状态出现。

ios 版本:10.3

【问题讨论】:

很好地发现和隔离! 【参考方案1】:

我发现 iOS11 和 SpriteKit 存在严重问题。过渡期间的游戏场景会自动暂停(但仅在 iOS11 中)。

转场后运行

myScene.isPaused = false

应该可以解决问题,并且在iOS10上运行游戏时应该没有不良影响

【讨论】:

感谢您的建议。你把myScene.isPaused = false放在哪里?我尝试输入didMove - 没有任何效果。而且,我忘了提,出现问题的目标版本是 10.3 如果你想把它放在场景内的 didMove 中,它只是 isPaused = false 如果你想把它放在 GameViewController 把它放在 presentScene 行之后并使用 sceneName.isPaused = false 两种方法都试过了 - 没用,动画停止了,抱歉。 viewDidAppear 期间执行此操作。这应该在场景显示在视图上之后触发。

以上是关于SpriteKit 动画意外停止的主要内容,如果未能解决你的问题,请参考以下文章

SpriteKit Swift动画一次只能在一个精灵上 - iOS

意外的物理体现在SpriteKit场景中

SpriteKit - 动画 SKShapeNode 形状路径

SpriteKit 动画物理

在 SpriteKit 中创建带有动画的彗星需要认真的帮助

Spritekit逐帧动画/性能问题