Как представить UiView из SKScene в Swift - PullRequest
0 голосов
/ 27 января 2019

Я создаю игру и хочу представить UIView (для моей сцены общего доступа в моей игре) из файла MenuScene.swift (который является SKScene).Я искал в 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 голосов
/ 27 января 2019

Вы не можете представить UIView внутри SKScene, поскольку SKScene был оптимизирован для обработки рендеринга спрайтов для игр и использует стек технологий, отличный от UIView.

Что вы можете сделать, это добавить UIView к родительскому представлению, к которому был добавлен SKView (который также является UIView). Это позволяет вам представить более статичный вид, переигрываемый поверх спрайт-представления вашей игры, например: вид счета, вид hud или меню.

Я поместил диаграмму этого ниже:

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