gpt4 book ai didi

ios - Swift/Spritekit 创建多个实例

转载 作者:行者123 更新时间:2023-11-28 08:08:59 24 4
gpt4 key购买 nike

目前正在开发一款游戏,我一直在思考如何最好地生成同一 Monster 的多个实例。在这个例子中,我的 Ogre 类是 Monster 类型,我在我的 Monster 类中使用了 spawn 函数创建新实例。唯一的问题是我在 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) 这样调用 spawn并使 spawn 函数更像:

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

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

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

最佳答案

你可以在你的 Monster 类中做这样的事情

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

关于ios - Swift/Spritekit 创建多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44278463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com