gpt4 book ai didi

swift - 如何使用继承创建节点?

转载 作者:行者123 更新时间:2023-11-30 10:49:34 25 4
gpt4 key购买 nike

我想从 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com