Swift / Spritekit创建多个实例

时间:2017-05-31 07:34:07

标签: ios swift sprite-kit

目前正在开发一款游戏,并且我仍然坚持如何最好地生成相同Monster的多个实例。在此示例中,我的Ogre类的类型为Monster,我使用spawn类中的Monster函数来创建新实例。唯一的问题是我在spawn方法中对Ogre类进行了硬编码,如下所示:

func spawn(scene: SKScene, number: Int) {
    for _ in 1...number {
        let ogre = Ogre()
        scene.addChild(ogre)
    }
}

显然,这对于产生不同类型的敌人不会起作用,我想做的是调用像Monster.spawn(scene: self, type: SomeMonster, number: 5)这样的生成并让生成函数更像:

func spawn(scene: SKScene, number: Int) {
    for _ in 1...number {
        let monster = node
        scene.addChild(monster)
    }
}

那么我怎样才能将不同的怪物传递给该函数以产生它们的倍数?是否可以将对象作为函数的参数传递,如spawn(monster: Ogre),或者可以覆盖类型Monster的每个类中的spawn函数,然后以某种方式创建该类的新实例?

真的,我认为我的主要问题是我根本不知道如何创建一个新的类实例而不明确知道它是什么并对其进行硬编码。欢迎任何想法和建议!

1 个答案:

答案 0 :(得分:0)

您可以在Monster班级

中执行此类操作
func spawn<T: Monster>(scene: SKScene, number: Int, monsterClass: T.Type) {
    for _ in 1...number {
        let monster = monsterClass.init()
        scene.addChild(monster)
    }
}