Ios 创建一个精灵并给它一个自定义类

Ios 创建一个精灵并给它一个自定义类,ios,swift,swift3,sprite-kit,sprite,Ios,Swift,Swift3,Sprite Kit,Sprite,我有一个名为Ball的自定义类和游戏场景中的一个精灵。sks: 游戏场景。sks: var ball:Ball! override func didMove(to view: SKView) { ball.setUp() addChild(ball) } import Foundation import SpriteKit class Ball: SKSpriteNode { func setUp() { self.texture = SKText

我有一个名为
Ball
的自定义类和
游戏场景中的一个精灵。sks

游戏场景。sks:

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

}
import Foundation
import SpriteKit
class Ball: SKSpriteNode {
     func setUp() {
         self.texture = SKTexture(imageNamed: "ball")
    }
}
球。斯威夫特:

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

}
import Foundation
import SpriteKit
class Ball: SKSpriteNode {
     func setUp() {
         self.texture = SKTexture(imageNamed: "ball")
    }
}
但它会抛出以下错误:
线程1:致命错误:在展开可选值时意外发现nil

有人能帮忙吗?谢谢

问题在于,您从未实际为
ball
赋值,这是一个隐式展开的可选选项,因此当您尝试使用
ball.setUp()
访问它时,其默认值
nil
为强制展开

与其直接修改
SKSpriteNode
子类的
texture
属性,您只需调用其指定的初始值设定项
Ball(imageNamed:“Ball”)
来实例化节点

因此,相应地修改游戏场景.sks:

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

问题在于,您从未实际为
ball
赋值,这是一个隐式展开的可选选项,因此当您尝试使用
ball.setUp()
访问它时,其默认值
nil
为强制展开

与其直接修改
SKSpriteNode
子类的
texture
属性,您只需调用其指定的初始值设定项
Ball(imageNamed:“Ball”)
来实例化节点

因此,相应地修改游戏场景.sks:

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

哪一行抛出这个错误?是不是球。设置?您如何在
GameScene.sks
中为
ball
赋值?它在这一行抛出错误:“bal.setUp()”哪一行抛出该错误?是不是球。设置?如何在
GameSecene.sks
中为
ball
赋值?它在这一行抛出错误:“bal.setUp()”