在SpriteKit中的GameScene.swift之前添加一个屏幕

时间:2015-09-16 00:37:45

标签: ios xcode swift sprite-kit

我正在使用Swift在XCode中制作游戏,我想在实际游戏之前添加一个起始屏幕。我不想只是一个淡出的图像,我想要一个带有“播放”,“选择字符”和一些按钮的屏幕。我不知道我是否应该添加一个新的swift文件,添加一个sks文件,编辑GameScene.swift文件?我刚刚开始在SpriteKit开发,如果你能解释我如何正确地做这件事,那将会很棒。感谢。

2 个答案:

答案 0 :(得分:0)

按照此步骤操作,它应该有效:

  1. 打开Interface Builder(main.storyboard)并添加UIViewController
  2. 选择新的UIViewController,转到编辑器>嵌入> UINavigationController的
    1. 一个。要删除游戏场景的UINavBar,您可以使用游戏场景视图控制器中的属性 navigationBarHidden执行此操作
  3. 将您选择的UIButtons和/或其他控件添加到新的View Controller
  4. 左键单击(ctrl)并将 PLAY UIControl拖动到显示游戏场景的View Controller。
  5. 添加与其UIControl对应项关联的其他View Controller后,连接其他UIControl。 (见下文)
  6. 如果您只使用SpriteKit模板文件编程,我建议您查看此Apple Documentation

    更多细节

    成功添加开始屏幕或根视图控制器后,为每个页面或屏幕添加一个ViewController,您需要通过拖动一个来显示开始屏幕进入故事板文件的时间。

    您需要在main.storyboard文件中使用视图控制器代表所有屏幕,下一步是控制点击来自"开始屏幕上的每个UIButton&# 34;到将显示其目标屏幕的ViewController。

答案 1 :(得分:-1)

您可以创建新的Sprite Kit场景和新的swift文件, 然后将您的swift文件的类别放入“自定义类别”检查器中, gamescene.sks,因此它将与默认GameScene一样工作。

g

然后在viewDidLoad中而不是原始GameScene中初始化菜单场景

if let menu = SKScene(fileNamed: "MainMenu") {
  menu.scaleMode = .aspectFill
  view.presentScene(menu)
}

您可以这样切换到原始场景(例如):

 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    if let touch = touches.first {
        let posistion = touch.location(in: self)
        let node = self.atPoint(posistion)
        if node == yourNode {
            if let originalScene = SKScene(fileNamed: "GameScene") {
                originalScene.scaleMode = .aspectFill
                view?.presentScene(originalScene)
            }
        }
    }
}