好吧所以我在Swift中创建了一个sprite kit游戏,我需要呈现一个新的Team.findOne({id:id}).populate('users').exec(function(err, team){
console.log(team.toJSON())
});
OVER(因为在新场景中会有一个清晰的背景,所以你仍然可以看到{{1}在我的原始SKScene
之下。
我尝试过多种方式,最初转换为视图控制器,而后者又应该以苹果对GameScene
和GameScene
的方式呈现新的SKScene
,但是我只是得到了一个灰色的屏幕。新GameScene
的代码都没有执行,我也无法添加任何GameViewController
或其他内容。
所以现在我已经部分成功转换到视图控制器,转换为新的SKScene
(名为skspritenodes
),如下所示:
SKScene
然后在GameOverScene
我有:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.dismissViewControllerAnimated(true, completion: nil)
(self.view as! SKView).presentScene(GameOverScene(size: self.view.bounds.size))
}
它似乎有效,但有两个问题:
"它有效!打印到控制台,我可以更改背景颜色,但我无法添加精灵节点或任何东西。例如,我看不到GameOverScene
即使我将背景设置为 let saveMeBtn = SKSpriteNode()
override func didMoveToView(view: SKView) {
//Do stuff in scene
println("it works!")
self.backgroundColor = SKColor.clearColor()
saveMeBtn.position = CGPoint(x: self.size.width * 0.5, y: self.size.height * 0.5)
saveMeBtn.setScale(1)
addChild(saveMeBtn)
}
}
,我也无法在下面看到GameScene。我只是得到一个黑屏。
我在这里做错了什么?我如何加载saveMeBtn
以上的clearColor()
并仍然看到SKScene
?
答案 0 :(得分:1)
据我所知,SpriteKit经过优化,只能渲染呈现的场景,而SKView只能一次呈现一个场景。
我可能错了,但它知道什么时候带有SKView / SKScene的UIViewController不是最顶级的,它不会渲染或更新。它类似于使用SKView对另一个VC执行push segue时的情况。如果继续渲染它会导致性能非常差,因此SpriteKit会停止渲染和更新不可见的SKView。
如果您希望游戏显示在下面,最好的办法是为它创建一个SKNode或SKSpriteNode子类。您可以根据需要调整大小,并仍然可以看到其下的其他场景。如果是我,我会添加一个名为GameOver的SKNode,添加我需要的任何精灵,然后将游戏滑过屏幕。
希望这很有帮助。
答案 1 :(得分:1)
只需使用参考节点加载它 使用适当的路径指向新场景。 如果你想访问物理,最好在加载场景后用枚举添加它们。
Gamescene由于ARC而被卸载,因为它不可见而被丢弃