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

时间:2018-05-25 16:18:57

标签: ios swift swift3 sprite-kit sprite

我有一个名为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 :(得分:1)

问题是,您实际上从未为ball实际分配值,这是一个隐式解包的可选项,因此当您尝试使用ball.setUp()访问它时,其默认值为nil被打开的力量。

您应该只调用其指定的初始化程序texture来实例化该节点,而不是直接修改SKSpriteNode子类的Ball(imageNamed: "ball")属性。

因此,相应地修改GameScene.sks

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