spritekit 菜单区域和按钮是否需要成为场景的一部分?

Do spritekit menu area and buttons need to be part of the scene?

正在尝试编写我的第一个 sprite kit 游戏。在屏幕的顶部,我将有一个菜单区域,其中包含按钮、游戏时间等。游戏的 skscene 将位于正下方。两者将同时可见。

由于菜单只是一个菜单,我的想法是将该区域设为 UIView 普通 UIButtons,即没有 sprite kit 节点。然后,在菜单下方添加一个SKView,让它填满屏幕的剩余部分并呈现游戏场景。所以菜单区是UIView,游戏区是兄弟SKView.

这是最佳做法吗?从我遇到的许多例子来看,感觉 sprite kit 打算让你只有一个 SKView,并全屏显示场景,并将场景本身内的任何菜单按钮包含为 sprite 节点。但是我看不出这样做有什么好处。

在许多游戏中,您描述的 "main menu" 会被称为 "HUD," 或抬头显示器。它显示了您需要的所有按钮,并且只是屏幕顶部的一个 SKSpriteNode。您可以添加 SKSpriteNodes 作为 HUD 的子节点,当点击时,将执行一个动作:

    let button = SKSpriteNode()
    button.position = CGPointMake((-200), 0)
    button.color = SKColor.redColor()
    button.size = CGSizeMake(15, 15)
    button.name = "button"
    HUD.addChild(button)

检查是否按下了该按钮:

 override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
    for touch in (touches as! Set<UITouch>) {
        let location = touch.locationInNode(self)
        let node = nodeAtPoint(location)
        if node.name = "button" {
            //run code
        }
    }
}

这个方法比较简单,但是你不得不放弃UIButtons。您可能还想设计用作按钮的节点:我使用了 this 编辑器。

希望这对您有所帮助,祝您好运。