【问题标题】:SpriteKit Swift: SKView returning nilSpriteKit Swift:SKView 返回 nil
【发布时间】:2018-05-26 18:15:26
【问题描述】:

我正在使用 spritekit 制作游戏。我在我的游戏中使用了一个操纵杆,它在一个名为“操纵杆”的单独 SKNode 类中声明。

在这个类中,我将一个 UIGesturerecongiser 添加到该类的视图中。在构造方法中,参数之一是从游戏场景传递的SKView。

操纵杆类中的构造方法:

 init(colour: UIColor, position: CGPoint, skView: SKView) {
    //constructor method
    self.colour = colour;
    self.parentposition = position;
    self.view = skView;

    super.init();

    //setup properties
    //user interaction is needed to allow touches to be detected
    self.isUserInteractionEnabled = true;
    //setup
    setup();
}

在游戏场景中,我这样初始化类:

class GameScene: SKScene {

     func setupJoyStick() {
        let joystick1 = Joystick(colour: UIColor.red, position: CGPoint(x: screenwidth / 3, y: screenwidth / 10 * 1.5), skView: self.view!)
        self.addChild(joystick1)
    }
}

错误:

当我运行我的应用程序时,我收到一个错误,因为“self.view”返回 nil,并且因为它被强制解包,它会导致一个致命错误。

定义视图的位置:

if let scene = GKScene(fileNamed: "GameScene") {

        // Get the SKScene from the loaded GKScene
        if let sceneNode = scene.rootNode as! GameScene? {

            // Copy gameplay related content over to the scene
            sceneNode.entities = scene.entities
            sceneNode.graphs = scene.graphs

            // Set the scale mode to scale to fit the window
            sceneNode.scaleMode = .aspectFill
            sceneNode.size = view.bounds.size
            // Present the scene
            if let view = self.view as! SKView? {

                view.presentScene(sceneNode)

                view.ignoresSiblingOrder = true

                view.showsFPS = true
                view.showsNodeCount = true
            }
        }
    }

其他信息:

我正在使用:

  • Xcode 9.2
  • 斯威夫特 4
  • 雪碧套件

我正在测试它:

  • iPhone 6s
  • 最新版本的 IOS(非测试版),最新的公开版本。

谁能解释一下为什么会发生这种情况以及如何解决这个问题。

在此先感谢,任何帮助将不胜感激。

【问题讨论】:

  • 你能分享你调用Joystickinit的代码和你存储self.view的代码吗?
  • 到目前为止,您显示了与问题无关的所有代码,操纵杆初始化程序无关紧要,因为它甚至没有到达,您需要显示调用它的核心及其上下文。

标签: ios swift swift4


【解决方案1】:

看起来您正在尝试获取 SKSceneview 属性,但它是 nil。那是因为你没有提交SKScene

很遗憾,我没有与 SpriteKit 合作过,但您可以找到有关 view 属性 hereSKScene here 的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 2013-02-18
    • 2019-06-20
    • 2017-12-16
    • 2014-09-27
    • 2017-06-11
    • 2014-12-29
    相关资源
    最近更新 更多