无法将场景编辑器中的 SKSpriteNode 引用到代码中

Not able to reference a SKSpriteNode from Scene Editor to code

我创建了一个 GameScene.sks 文件,添加了一个 Color Sprite,并为其命名 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。如何从场景编辑器中引用精灵而无需手动初始化并使用代码放置它?

首先在你的 GameScene.sks 中确认 dino 确实是 Scene child

然后在这一行

中创建一个新的SKSpriteNode
private var dino: SKSpriteNode? = SKSpriteNode()

成功 Optional

private var dino: SKSpriteNode?