我想从Unit
创建一个子类GameScene.swift
的节点。该代码可以执行,但是看不到节点。
我使用以下代码:
GameScene.swift
func setFirstUnit() {
let myUnit = Unit(pHealthpoints: 10, pDamage: 5, pMovement: 1)
myUnit.position = CGPoint(x: self.size.width / 2, y: self.size.height / 2)
self.addChild(myUnit)
}
Unit.swift
class Unit: SKNode{
var healthPoints: Int
var damage: Int
var movement: Int
var texture: SKTexture
let knightTexture = "KnightBlueV2"
init(pHealthpoints: Int, pDamage: Int, pMovement: Int) {
healthPoints = pHealthpoints
damage = pDamage
movement = pMovement
texture = SKTexture(imageNamed: knightTexture)
let unit = SKSpriteNode(texture: texture)
unit.zPosition = 4
unit.setScale(1)
super.init()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
我将非常感谢您提供任何答案。
答案 0 :(得分:0)
您是从SKNode继承的,后者没有属性可以在屏幕上显示任何内容。这就是为什么屏幕上什么都没有显示的原因。如果要在屏幕上看到某些内容,则需要从SKSpriteNode或具有可见属性的另一个节点类继承,您可以在屏幕上看到它们。
比从SpriteKit节点类之一继承继承更好的解决方案。与其使用继承,不如使用合成。为Unit类提供一个SKSpriteNode类型的属性,并使用该属性加载纹理,移动该单元并在屏幕上显示该单元。
class Unit {
sprite: SKSpriteNode
// Rest of class here.
}