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

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)

【讨论】:

以上是关于创建一个精灵并给它一个自定义类的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式添加尺寸类自定义

类自定义排序的 C++ 向量

CakePHP 类自定义导入

UICollectionViewCell 中的 NSLayoutConstraint:尺寸类自定义不起作用

Xcode8 可以根据大小类自定义工具栏吗?

WPF 样式 TabControl TabItems 自定义前景色/背景色