【问题标题】:Create a sprite and give it a custom class创建一个精灵并给它一个自定义类
【发布时间】:2018-05-25 16:18:57
【问题描述】:

我有一个名为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 有人可以帮忙吗?谢谢

【问题讨论】:

  • 哪一行会抛出这个错误?是ball.setUp吗?你如何在GameScene.sks 中为ball 赋值?
  • 它在这一行抛出错误:“bal.setUp()”

标签: ios swift swift3 sprite-kit sprite


【解决方案1】:

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

与其直接修改SKSpriteNode 子类的texture 属性,不如简单地调用其指定的初始化器Ball(imageNamed: "ball") 来实例化节点。

所以相应地修改GameScene.sks

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

【讨论】:

    猜你喜欢
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 2016-07-21
    • 2011-10-22
    • 1970-01-01
    相关资源
    最近更新 更多