在我的游戏中,我对 SKSpriteNode 进行了子类化并添加了生成函数:
class Character: SKSpriteNode {
func spawn(parentNode: SKNode, position: CGPoint) {
parentNode.addChild(self)
}
}
然后,从 GameScene.swift 中,我循环遍历一个数组并在每次传递时生成一个新角色:
for _ in shuffledCharacterArray {
let wrongCharacter = Character()
wrongCharacter.spawn(parentNode: self, position: shuffledPositionArray)
}
可笑的是,一切都正常。我不明白的是为什么。似乎在数组中的每个循环中,我都一遍又一遍地创建相同的错误字符实例。所以,我的问题是,这是否被认为是创建许多实例的“正确”方法?
最佳答案
似乎存在一些问题。
首先,您没有使用 spawn
方法的第二个参数。如果您在这里显示的是整个方法主体,您可能应该删除该参数或使用它。
其次,您似乎将一个数组传递给接受CGPoint
的参数。您确定 shuffledPositionArray
是 CGPoint
吗?
第三,您似乎没有将 Character
节点添加到某种集合(例如数组)中。如果您想稍后访问这些字符,您可能应该将它们添加到数组中:
// I don't know why you are iterating through shuffledCharacterArray and ignoring each element, so I changed it to loop 10 times here.
for _ in 0..<10 {
let character = Character()
character.spawn(parent: self, position: ...)
characters.append(character) // <----
}
关于你这样添加 Sprite 是否“正确”的问题,我想说我以前从未见过有人这样做。我见过的大多数人都是这样做的:
let character = Character()
self.addChild(character)
如果您采用另一种方式,代码的读者可能会感到困惑,并且可能必须研究 spawn
的实现方式才能理解您在做什么。然而,在这种情况下,我认为 spawn
是一个足够描述性的名称。
关于swift - SpriteKit - 如何生成相似的角色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49953114/