SpriteKit - 如何产生类似的字符?

时间:2018-04-21 06:40:10

标签: swift sprite-kit

在我的游戏中,我将SKSpriteNode子类化并添加了一个spawn函数:

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)
}

荒谬的是一切都有效。我没有得到的是为什么。似乎对于数组中的每个循环,我一遍又一遍地创建相同的wrongCharacter实例。所以,我的问题是,这被认为是创建许多实例的“正确”方法吗?

1 个答案:

答案 0 :(得分:0)

似乎有一些问题。

首先,您没有使用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) // <----
}

关于你是否添加这样的精灵的问题是&#34;对&#34;,我会说我以前从未见过人们这样做过。我见过的大多数人都这样做:

let character = Character()
self.addChild(character)

如果你以另一种方式这样做,你的代码的读者可能会被混淆一秒,并且可能需要研究如何实现spawn来理解你在做什么。但是,在这种情况下,我认为spawn是一个描述性足够的名称。