微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

xcode – 如何在我的应用程序上创建另一个屏幕

所以我想知道,认的“游戏” Xcode配置.你会如何制作另一款SKScene?比如说我想要一个菜单​​或什么?

基本上我将如何创建另一个标题为“title.swift”的文档,然后以编程方式来回切换它们?这样我可以从菜单到游戏场景而不会弄乱我的代码

我无法在重新编码的代码中找到它实际上告诉swift显示用“游戏”配置预制的游戏场景.

我想我创建了一个新类并继承了SKScene.

解决方法

您可以通过继承SKScene或其创建的任何子类来创建新场景.您可以通过调用SKView方法presetScene(场景:SKScene)在场景之间切换.这是我在上一场比赛中实现它的方式:

//handles all scene transitions
protocol SceneTransitionDelegate {
     //this passes the scene as a class (not object)
     func transitionToScene(sceneClass:Scene.Type)
}

//make sure all you scenes are a subclass of this (so they inherit sceneDelegate):
class Scene: SKScene { //Scene inherits from SKScene
    var sceneDelegate:SceneTransitionDelegate!
    required override init(size: CGSize) {
        super.init(size: size)
    }
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

class GameScene:Scene {
    //call this method within the scene to return to the main menu
    func gameOver() {
        sceneDelegate.transitionToScene(MainMenuScene.self)
    }
}

class MainMenuScene: Scene {
    //call this method to transition to a game scene
    func newGame() {
        sceneDelegate.transitionToScene(GameScene.self)
    }
}

//the VC that presents your scenes 
class GameViewController: UIViewController,SceneTransitionDelegate {

    var skView:SKView { return view as! SKView }

    override func viewDidLoad() {
        super.viewDidLoad()

        //load first scene (e.g. MainMenu)
        transitionToScene(MainMenuScene.self)
    }

    //SceneTransitionDelegate method
    func transitionToScene(sceneClass:Scene.Type) {
        let scene = sceneClass(size: skView.bounds.size)
        scene.scaleMode = .AspectFill
        scene.sceneDelegate = self
        skView.presentScene(scene)
    }
}

您可以通过向SceneTransitionDelegate添加自定义过渡的方法来改进这一点.

protocol SceneTransitionDelegate {
    func transitionToScene(sceneClass:Scene.Type)
    func transitionToScene(sceneClass:Scene.Type,transitionAnimation:SKTransition)
}

并将新方法添加到视图控制器,如下所示:

func transitionToScene(sceneClass: Scene.Type,transitionAnimation: SKTransition) {
    let scene = sceneClass(size: skView.bounds.size)
    scene.scaleMode = .AspectFill
    scene.sceneDelegate = self
    skView.presentScene(scene,transition: transitionAnimation)
}

在这样的场景中调用它:

func gameOverAnimated() {
    let transition = SKTransition.crossFadeWithDuration(0.5)
    sceneDelegate.transitionToScene(MainMenuScene.self,transitionAnimation: transition)
}

我做了一个快速演示xcode项目here.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐