Не удалось сослаться на код SKSpriteNode из редактора сцен для кода - PullRequest
0 голосов
/ 04 февраля 2019

Я создал файл 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? SKSpriteNode равна nil.Как мне ссылаться на спрайт из редактора сцены без необходимости вручную инициализировать и размещать его с помощью кода?

1 Ответ

0 голосов
/ 04 февраля 2019

Сначала убедитесь, что в вашем GameScene.sks Дино действительно Scene ребенок

enter image description here

Затем вместо создания нового SKSpriteNodeв этой строке

private var dino: SKSpriteNode? = SKSpriteNode()

Make it Optional

private var dino: SKSpriteNode?
...