Mik*_*keL 3 iphone xcode ios sprite-kit
我发现一个奇怪的问题从iOS 11开始,我的应用程序不会更新我的SKReferenceNode上的精灵.基本上,我有一个"覆盖"节点(我用于多个场景的SKS文件),它有一个页眉和页脚.在标题中,有一个分数栏,当玩家得分时会扩展.我正在用SKAction为分数栏设置动画.从iOS 11开始,分数栏不会出现.它发生在模拟器和设备上.有趣的是,如果我通过调试器暂停/恢复应用程序,则会立即显示分数栏.我能够将问题删除到以下代码.
import SpriteKit
var overlayNode:SKNode?
var header = SKSpriteNode()
var scoreBar:SKSpriteNode?
var scaleX:CGFloat = 0.3
class GameScene: SKScene {
override func didMove(to view: SKView) {
let path = Bundle.main.path(forResource: "SceneOverlay", ofType: "sks")
let overlay = SKReferenceNode(url: URL(fileURLWithPath: path!))
self.addChild(overlay)
overlayNode = overlay.children.first
header = overlayNode!.childNode(withName: "header") as! SKSpriteNode
scoreBar = SKSpriteNode(imageNamed: "redBar")
scoreBar?.position = CGPoint(x: 0, y: 0)
scoreBar?.zPosition = 10
scoreBar?.anchorPoint = CGPoint(x: 0, y: 0.5)
scoreBar?.xScale = 0
header.addChild(scoreBar!)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
scaleX += 0.1
let scoreBarExpand = SKAction.scaleX(to: scaleX, duration: 0.8)
scoreBar!.run(scoreBarExpand)
print ("Expanding score bar to \(scaleX)")
}
}
Run Code Online (Sandbox Code Playgroud)
叠加SKS文件就是这样的:
如果您在iOS 11模拟器或设备上运行此代码,并点击屏幕,则每次点击时都会显示分数栏并向上扩展10%.但是,你什么都看不到.然后,您可以在Xcode调试器中暂停和恢复应用程序,该栏将立即显示并展开.同样,此问题不会出现在iOS 10设备/模拟器上.
关于这里发生了什么的任何想法?
提前致谢.
正如我在其他一些场景中指出的那样,但他们都指出了同样的问题.我发现iOS11和SpriteKit存在严重问题.过渡期间的游戏场景会自动暂停(但仅限iOS11).
Knight0fDragon还指出,看起来对象在创建时暂停,而不是在转换期间.但结果相同.
转换到场景后运行
myScene.isPaused = false
Run Code Online (Sandbox Code Playgroud)
它应该解决问题,并且当游戏在iOS10上运行时应该没有不利影响