我想从 GameScene.swift
创建子类 Unit
的节点。代码可以执行,但是看不到节点。
我使用以下代码:
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")
}
}
如果您有任何答复,我将不胜感激。
最佳答案
您继承自 SKNode,它没有在屏幕上显示任何内容的属性。这就是为什么屏幕上没有显示任何内容。如果你想在屏幕上看到一些东西,你需要继承SKSpriteNode或其他具有可见属性的节点类,你可以在屏幕上看到。
有比从 SpriteKit 节点类之一继承更好的解决方案。不使用继承,而使用组合。为 Unit 类提供一个 SKSpriteNode 类型的属性,并使用该属性加载纹理、移动单元并在屏幕上显示单元。
class Unit {
sprite: SKSpriteNode
// Rest of class here.
}
关于swift - 如何使用继承创建节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54951855/