【问题标题】:Not able to reference a SKSpriteNode from Scene Editor to code无法将场景编辑器中的 SKSpriteNode 引用到代码中
【发布时间】:2019-06-28 02:42:05
【问题描述】:

我创建了一个GameScene.sks 文件,添加了一个彩色精灵,并为其命名为dino。然后在GameViewController

override func viewDidLoad() {
    let scene = GameScene(size: view.bounds.size)
    let skView = view as! SKView
    skView.showsFPS = true
    skView.showsNodeCount = true
    skView.ignoresSiblingOrder = true
    scene.scaleMode = .resizeFill
    skView.presentScene(scene)
}

我有GameScene.swift,看起来像

class GameScene: SKScene {
    //let player = SKSpriteNode(imageNamed: "dino-left")
    private var dino: SKSpriteNode? = SKSpriteNode()
    private var dinoWalkingFrames: [SKTexture] = []

    override func didMove(to view: SKView) {
        self.backgroundColor = NSColor.white
        if let someDino = self.childNode(withName: "dino") as? SKSpriteNode {
            // ... does not works -->
            dino = someDino
            dino?.physicsBody?.isDynamic = false
            print("Worked")
        } else {
            initDino()  // --> this works
            initBackground()
        }
    }

    func initDino() {
        // manually load image from texture atlas and add using addChild
        // ...
    }
// ...
}

引用self.childNode(withName: "dino") as? SKSpriteNodenil。如何从场景编辑器中引用精灵,而无需使用代码手动初始化和放置?

【问题讨论】:

    标签: swift macos cocoa sprite-kit


    【解决方案1】:

    首先确保在您的GameScene.sks 中,dino 确实是Scene 孩子

    那么不要在这一行创建一个新的SKSpriteNode

    private var dino: SKSpriteNode? = SKSpriteNode()
    

    让它Optional

    private var dino: SKSpriteNode?
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-05
      • 1970-01-01
      • 2016-02-26
      • 2018-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多