gpt4 book ai didi

swift - 动态地将组件添加到实体

转载 作者:行者123 更新时间:2023-11-30 13:23:47 26 4
gpt4 key购买 nike

在我的游戏中,我有一个实体,它是一个空机器人,还有一些组件是用于构建该机器人的部件( ARM 、头部、武器、工具等),每个部件都由不同的类型组成。我想要的是玩家通过动态添加部件来开始构建机器人。我的实体类具有如下属性:

var arm: Component!
var head: Component!
var legs: Component!
var weapon: Component!

基本上,机器人实体具有游戏中每个可能组件的属性,当我获得组件的新想法时,我必须在机器人类中为它们创建属性,并且我有一个函数将每个属性分配给玩家添加的组件。我这样做的原因是能够从外部类访问它们,如下所示:

robot.weapon.shoot()
robot.legs.move()

但是我想要的是机器人实体一开始就没有任何组件引用,我希望它们根据玩家的选择动态添加,并且仍然能够访问它们,就像我上面所示的那样,这意味着该类将为空,并且当玩家添加组件(例如手枪)时,会出现类似的属性,或者某种使该组件成为该实体的一部分的方式:

var weapon: Component = Pistol()

我不确定是否可以做到这一点。

PS:我没有使用 GamePlayKit 中内置的组件实体系统,我也不想这样做。

最佳答案

我猜你需要的是 Null Object图案。您必须为机器人组件创建类,以表示没有特殊 Action 。例如,您可以创建 AbsentWeapon 类,并且它的 shoot() 必须在您的游戏中不执行任何操作。或者它可以向事件控制类发送一条有关尝试不使用武器射击的消息(这取决于您的设计)。

您可以使这些类成为单例对象以简化检查(if myWeapon == EmptyComponents.getEmptyWeapon() {...})

关于swift - 动态地将组件添加到实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37461817/

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