如何在Swift中从SKScene呈现UiView

时间:2019-01-27 07:32:16

标签: ios swift uiview skscene

我正在制作游戏,我想从我的UIView(这是一个SKScene)文件中展示一个MenuScene.swift(用于我的游戏中的共享场景)。我在Stack Overflow上搜索了类似的问题,但是没有一个在我的游戏中起作用。谁能告诉我它是如何完成的?

菜单场景:

class MenuScene: SKScene {   
    override func didMove(to view: SKView) {
        backgroundColor = UIColor(red: 44/255, green: 62/255, blue: 80/255, alpha: 1.0)
        addLabelsAndButtons()
    }

    func addLabelsAndButton() {

        let shareButton = SKSpriteNode(imageNamed: "ShareButton")
        shareButton.size = CGSize(width: frame.size.height/12, height: frame.size.height/12)
        shareButton.position = CGPoint(x: frame.midX + shareButton.size.width/1.5, y: frame.minY + shareButton.size.height)
        shareButton.name = "ShareButton"
        addChild(shareButton)

    }
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        if atPoint((touch.location(in: self))).name == "ShareButton" {
            //Where I want to present my Share Scene!
        }
    } 
}

1 个答案:

答案 0 :(得分:0)

您无法在SKScene中显示UIView,因为SKScene已针对处理游戏的精灵渲染进行了优化,并使用了与UIView不同的技术堆栈。

您可以做的是将UIView添加到添加了SKView的父视图(也是UIView)。这样一来,您可以在游戏的画面视图上方显示一个更加静态的视图,例如:比分视图,平视视图或菜单。

我在下面放了一张图:

UIView
  ⮑ 0: SKView
          ⮑ 0: SKScene
  ⮑ 1: UIView