Создайте спрайт и присвойте ему собственный класс - PullRequest
0 голосов
/ 25 мая 2018

У меня есть пользовательский класс с именем Ball и спрайт в GameScene.sks:

GameScene.sks:

var ball:Ball!
override func didMove(to view: SKView) {
    ball.setUp()
    addChild(ball)

}

Ball.swift:

import Foundation
import SpriteKit
class Ball: SKSpriteNode {
     func setUp() {
         self.texture = SKTexture(imageNamed: "ball")
    }
}

Но выдает эту ошибку: Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value Может кто-нибудь помочь?Спасибо

1 Ответ

0 голосов
/ 25 мая 2018

Проблема в том, что вы никогда не назначаете значение для ball, которое является неявно необязательным, поэтому при попытке доступа к нему с помощью ball.setUp() его значение по умолчанию nil принудительно разворачивается.

Вместо прямого изменения свойства texture вашего подкласса SKSpriteNode, вам просто нужно вызвать его назначенный инициализатор Ball(imageNamed: "ball") для создания экземпляра узла.

Поэтому измените GameScene.sks соответственно:

override func didMove(to view: SKView) {
    ball = Ball(imageNamed: "ball")
    addChild(ball)
}
...