将 SKSpriteNode 的属性用于子类

Using properties of SKSpriteNode for subclass

这更像是一个关于 classes 和 Swift 中的继承的一般问题 4.

在Apple的开发指南中,自定义class("anySuperclass")的子class("anySubclass")可以直接access/inherit父属性,例如:

anySubclass.anyProperty = xyz(anyProperty 仅在 Superclass 中定义)

我的问题:

我目前正在使用 SpriteKit 开发我的第一个游戏,并想创建 SKSpriteNode 的子classes,其中一个应该是 clBackGround。

如果我只是将它定义为SKSpriteNode的子class,即

class clBackGround:SKSpriteNode {
}

我认为我可以像这样简单地使用与 SKSpriteNode 关联的所有属性:

var bg1 = clBackGround()

bg1.size = ...
.
.
.

但这似乎不起作用。所以我的问题是:

我是否需要初始化我想在 clBackGround 中使用的 SKSpriteNode 的所有属性(使用指定的初始化程序)?然后如何将图像分配给此子实例class?

如有任何帮助,我们将不胜感激!

不确定这是否是您要问的,但是,一般来说,如果您创建对象的子类,则无需执行任何特殊操作即可访问超类的属性。它们将以通常的方式初始化。

但是,如果您有自己的子类初始化器,则必须确保以正确的方式调用超类的初始化器。

如果是 SKSpriteNode 的子类,如果您为子类定义自己的初始化程序,该初始化程序将需要调用指定的超类初始化程序,该初始化程序传入用于精灵的纹理、颜色和大小:

init(enemyType:String) {
    let texture = SKTexture(imageNamed: "enemy_\(enemyType)")
    let color = UIColor.black
    let size = texture.size()
    super.init(texture: texture, color: color, size: size)
}