【问题标题】:Switch from UIViewController to SKSCene doesn't show anything从 UIViewController 切换到 SKSCene 不显示任何内容
【发布时间】:2017-02-27 17:09:26
【问题描述】:

我已经开始用 Spritekit 创建一个对战游戏了。

我有一个启动画面和主菜单。 我使用 UIViewController 创建这两个页面,使用 SKScene 创建游戏场景。 现在在 MainMenu 我想在 Play 按钮操作中切换到 GameScene 但 GameScene 没有显示任何内容。 我在 GameScene 中有断点,令人惊讶的是 didMoveToView 中的所有代码都在运行,但我的页面凹痕切换到 GameScene 我还在 MainMenu 中。

我使用以下代码从uiviewcontroller切换到游戏场景:

@IBAction func playButton(sender: UIButton) {

    let scene = GameScene(size:view.bounds.size)//(fileNamed: "GameScene") {
    let skView = self.view as! SKView
    skView.showsFPS = true
    skView.showsNodeCount = true
    skView.ignoresSiblingOrder = true
    scene.scaleMode = .AspectFill
    skView.presentScene(scene)


}

override func didMoveToView(view: SKView) {
    /* Setup your scene here */
    let myLabel = SKLabelNode(fontNamed:"Chalkduster")
    myLabel.text = "Hello, World!"
    myLabel.fontSize = 45
    myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))

    self.addChild(myLabel)
}

正在运行,我可以通过断点导航到它。

【问题讨论】:

  • 调试时是否尝试查看 UI Hierarchy?
  • 是的,但是你的意思是它有什么特别之处吗?
  • sk 视图是否可见?尝试设置场景的标签大小或背景颜色,可能场景显示但为空。
  • 我可以在 UI Hierarchy 中看到 sk 视图,并且它的 hidden 属性未选中。
  • 两页是什么意思?您如何从第 1 页切换到第 2 页,在我看来,游戏场景处于活动状态,但您从未呈现视图。顺便说一句,我建议不要将 GameScene(size:view.bounds.size) 与方面填充一起使用,你只会在以后混淆自己。要么选择一个允许缩放的静态大小,要么使用 resizeFill 缩放模式

标签: ios swift sprite-kit


【解决方案1】:

我终于找到了问题所在。 我不得不从 superview 中删除所有对象,如 UIImages、Buttons、Labels、...。 像这样:

       for view in self.view.subviews {
        view.removeFromSuperview()
       }

他们不允许展示 GameScene 节点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多