创建一个精灵并给它一个自定义类
Posted
技术标签:
【中文标题】创建一个精灵并给它一个自定义类【英文标题】: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()”
【参考方案1】:
问题是您从未真正为ball
赋值,这是一个隐式展开的可选选项,因此当您尝试使用ball.setUp()
访问它时,其默认的nil
值是强制展开的。
与其直接修改SKSpriteNode
子类的texture
属性,不如简单地调用其指定的初始化器Ball(imageNamed: "ball")
来实例化节点。
所以相应地修改GameScene.sks
:
override func didMove(to view: SKView)
ball = Ball(imageNamed: "ball")
addChild(ball)
【讨论】:
以上是关于创建一个精灵并给它一个自定义类的主要内容,如果未能解决你的问题,请参考以下文章