我在一个场景中有一个SKSpriteNode,该场景具有SpriteKit场景编辑器内置的动画。没有动画是通过代码完成的。 skspritenode从.sks文件导入到场景中。
我已经在运行iOS 10.3.2的iPad Pro上进行了测试,并且工作正常,而在运行iOS 12的iPhone XS Max上,动画仅在我关闭应用程序后才播放(甚至退出多任务处理),并且返回。动画在应用程序首次启动时不会开始播放。
我已经读到:“从iOS11开始,Apple已将场景和SKSpriteNodes的默认状态设置为暂停。”所以要解决,我告诉导入的节点:
nodeName.isPaused =否。这样就解决了问题。
为什么退出应用程序并重新打开它会导致某些内容需要取消暂停?
答案 0 :(得分:1)
对于IsPaused
,场景将在离开应用程序时将此属性设置为true,而从应用程序返回时将其设置为false。这将导致所有节点也将IsPaused变量设置为false和true。
我建议覆盖IsPaused属性,并将getter和setter链接到您自己的类中的私有变量。
您也可以使用||。使用内置的isPaused,以防您需要处理它。
class GameScene : SKScene
{
private var _realPaused = false
public override var isPaused : Boolean
{
get
{
return super.isPaused || _realPaused
}
set
{
super.isPaused = newValue // this will mess with your children nodes if they are not the same value as parent, preserve all children prior to setting this if needed
}
}
}