多个sks文件,在SpriteKit中基于GVC调用适当的场景

时间:2016-03-08 05:17:09

标签: iphone swift ipad sprite-kit universal

我有五个iPad场景,我的GVC中有5个iPhone场景我有这个,我可以调用欢迎场景和Hud场景没有问题,但我无法复制其他场景的相同调用。我不知道它是否是花括号,但我似乎无法调用默认为iPhone场景的其他iPad场景。 (相信我,当HUD出现时,我非常兴奋。)有人可以就我的代码结构给出一些建议。请....

import SpriteKit
class GameViewController: UIViewController {


    override func viewDidLoad() {
        super.viewDidLoad()

        if (UIDevice.currentDevice().userInterfaceIdiom == .Phone) {

      if let scene = WelcomeScene(fileNamed:"WelcomeScene") {

        let skView = self.view as! SKView
        skView.showsFPS = GlobalData.Constant.DEV.DEBUG
        skView.showsNodeCount = GlobalData.Constant.DEV.DEBUG
        skView.ignoresSiblingOrder = true
        scene.scaleMode = .AspectFill
        skView.presentScene(scene)


    }

        } else {

            if let scene = WelcomeScenePad(fileNamed: "WelcomeScenePad") {
                let skView = self.view as! SKView
                skView.showsFPS = GlobalData.Constant.DEV.DEBUG
                skView.showsNodeCount = GlobalData.Constant.DEV.DEBUG
                skView.ignoresSiblingOrder = true
                scene.scaleMode = .AspectFill
                skView.presentScene(scene)

                if let scene = HudScenePad(fileNamed: "HudScenePad") {
                    let skView = self.view as! SKView
                    skView.showsNodeCount = GlobalData.Constant.DEV.DEBUG
                    skView.ignoresSiblingOrder = true
                    scene.scaleMode = .AspectFill
                    skView.presentScene(scene)
                }



            } else  if let scene = WelcomeScene(fileNamed:"WelcomeScene") {

                let skView = self.view as! SKView
                skView.showsFPS = GlobalData.Constant.DEV.DEBUG
                skView.showsNodeCount = GlobalData.Constant.DEV.DEBUG
                skView.ignoresSiblingOrder = true
                scene.scaleMode = .AspectFill
                skView.presentScene(scene)
            }


        }



    }




    override func prefersStatusBarHidden() -> Bool {
        return false
    }

    override func shouldAutorotate() -> Bool {
        return true
    }

    override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {

        if UIDevice.currentDevice().userInterfaceIdiom == .Phone {

            return .AllButUpsideDown

        } else {

            return .All

    }




}


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Release any cached data, images, etc that aren't in use.
    }

   }

这段代码让我知道游戏场景将转到正确的sks文件,并在编辑器中打印该值,以验证,这是在我的gameOver函数中。

  if (UIDevice.currentDevice().userInterfaceIdiom == .Pad ){

        if let _ = SceneTypePad(rawValue: fullSKSNameToLoad + String("Pad")) {

            fullSKSNameToLoad = "fileNamed" + "Pad"

            goToScenePad(SceneTypePad.DebateScene1Pad)
            print(("Went to DebateScenePad"))
            _ = SKTransition.fadeWithDuration(3)

            _ = DebateScene1Pad()


        }
    } else  if (UIDevice.currentDevice().userInterfaceIdiom == .Phone ){
        goToScene(SceneType.DebateScene1)
        (print("Went to DebateScenePhone"))
        _ = SKTransition.fadeWithDuration(3)

        _ = DebateScene1()

    }

三秒太长了不能等待...... :)

1 个答案:

答案 0 :(得分:0)

我需要创建一个新的静态变量来调用我的GlobalData / Base Scene文件中的SKs pad场景。 Noob错了。当复制新文件的代码时,请仔细检查变量,当重复swift文件时。此外,让头脑休息是好的,个人不能保持他们的注意力跨度并且在编码14小时后变得敏锐......散步,用新鲜的头脑梳理它。截止日期在这项业务中至关重要,但有时候压力会导致可以轻松解决的愚蠢决策。

 static var previousScenePad:SceneTypePad?

 static var nextScenePad:SceneTypePad?
if (UIDevice.currentDevice().userInterfaceIdiom == .Phone) {

if (UIDevice.currentDevice().userInterfaceIdiom == .Pad ){

  if let _ = SceneTypePad(rawValue: fullSKSNameToLoad + String("Pad")) {

        fullSKSNameToLoad = "fileNamed" + "Pad"

    }
} else  if (UIDevice.currentDevice().userInterfaceIdiom == .Phone ){


    }

在调用特定SKS文件时,是否可以在GVC中工作。显然,它基于使用在基类中定义的正确fileName“”来呈现正确的视图,是的,我知道,有更好的方法来使用一个SKS文件,并使用相机节点来调整视图。在内容方面,拥有更多空间,它可以创造出更多像素和更多空间的不同体验。资产同样重要,因为在开始时我每台设备都调用了错误的资产,我决定硬编码,我的外观尺度因素不会失去解决方案。最终结果将是一个跨平台工作的通用应用程序。如果你正确优化,我能够将140mb应用程序压缩到76mb,即使我在我的应用程序包中添加了5个新场景。检查背景音乐,检查声音效果和PNG文件。限制发射器的效果看起来不错。您可以随时返回并在下次更新中找到更清洁的方法!