首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SKReferenceNode发行于iOS 11

SKReferenceNode发行于iOS 11
EN

Stack Overflow用户
提问于 2017-10-23 13:31:09
回答 2查看 342关注 0票数 3

我发现了一个奇怪的问题,从iOS 11开始,我的应用程序不会在我的SKReferenceNode上更新精灵。基本上,我有一个“覆盖”节点(用于多个场景的SKS文件),它有一个页眉和页脚。在标题中,有一个得分栏,当球员得分时,它会扩展。我正在用SKAction动画记分栏。从iOS 11开始,记分栏就不会出现。它发生在模拟器和设备上。有趣的是,如果我通过调试器暂停/恢复应用程序,就会立即出现得分条。我能够将问题简化为下面的代码。

代码语言:javascript
复制
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)")

    }

}

覆盖SKS文件简单如下:

SKS重叠图像

如果您在iOS 11模拟器或设备上运行此代码,并在屏幕上点击,则每次点击时,得分栏都会出现并放大10%。不过,你什么也看不见。然后,您可以在Xcode调试器中暂停并恢复应用程序,该条将立即出现并展开。同样,此问题不会出现在iOS 10设备/模拟器上。

对这里发生了什么有什么想法吗?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-23 14:00:48

正如我在其他一些场景中所指出的,但它们都指向同一个问题。我发现了iOS11和SpriteKit的一个严重问题。过渡期间的游戏场景是自动暂停的(但只在iOS11中)。

Knight0fDragon还指出,看起来对象在创建时会暂停,而不是在转换期间。不过结果也一样。

在过渡到现场后运行

代码语言:javascript
复制
myScene.isPaused = false 

并且它应该解决这个问题,并且在iOS10上运行游戏时不应该有任何不利的影响。

票数 6
EN

Stack Overflow用户

发布于 2018-08-22 21:12:45

我在我的ObjC项目中也遇到了同样的问题。Knight0fDragons的回答对我没有直接作用,但它激励了我。

奇怪的是,先是停下来,然后再不停下来,这对我来说是件好事。

代码语言:javascript
复制
    myScene.paused = YES;
    myScene.paused = NO;

希望这能帮上忙。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46890637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档