swift - SpriteKit - 如何生成相似的角色?

标签 swift sprite-kit

在我的游戏中,我对 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的参数。您确定 shuffledPositionArrayCGPoint 吗?

第三,您似乎没有将 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/

相关文章:

swift - SpriteKit使用removeFromParent删除节点不起作用

ios - 下拉菜单更新 View

ios - 将 json 数据保存在内部设备中

Swift 递归函数,返回类型 Closure

ios - Swift 中 UserDefaults 中的 int 数组中仅删除特定的 int 值

iOS自定义键盘制作删除所有按钮

ios - 如何让敌人拥有独立的生命?

swift - 如何在 Playground 上访问我的 ViewController 和 Scene 瞬间?

ios - 如何创建 overlaySKScene SWIFT Xcode 来显示 HUD 或控件?

swift - 更新循环中的递增计数器?