目前正在开发一款游戏,并且我仍然坚持如何最好地生成相同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函数,然后以某种方式创建该类的新实例?
真的,我认为我的主要问题是我根本不知道如何创建一个新的类实例而不明确知道它是什么并对其进行硬编码。欢迎任何想法和建议!
答案 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)
}
}