gpt4 book ai didi

c# - 基于类型实例化游戏对象

转载 作者:行者123 更新时间:2023-11-30 22:57:48 24 4
gpt4 key购买 nike

所以基本上我正在努力解决一个问题,希望这里有人能指出我正确的方向。

我随机生成项目,并尝试实例化所述项目,唯一的问题是虽然我能够实例化父项目,但我无法预先知道生成的项目是否是“武器/盔甲”等,它们都是 Item 的继承子项。因此,我能够获取生成项的类型,但无法将该类型转换回要实例化的所述脚本/对象。

例如:元素>武器>剑。我能够生成一把剑,并获得剑的类型,但是我无法实例化一把剑,因为我只有类型,没有真正的剑。

因为我的 Sword 类在它的 Start 方法中加载了数据,然后是 Weapon,然后是 Item,我不能仅仅实例化一个 Item 就知道它是一把剑。也许我做错了。

感谢阅读!

最佳答案

创建一个武器enum

public enum WeaponType {sword, crossbow, q36SpaceModulator }

用它来告诉你的 factory (@Draco18s comment) build 什么 - 在这种情况下制造武器的方法。

public class WeaponFactory {
public Weapon Create (WeaponType thisWeapon) {
Weapon newWeapon;

switch (thisWeapon) {
case WeaponType.sword :
newWeapon = BuildSword();
break;

case WeaponType.crossbow:
newWeapon = BuildCrossbow();
break;

// and so on...
default: // we don't have whatever-you-asked-for
}

return newWeapon;
}

private Weapon BuildSword() { return new Sword(); }

}

// somewhere in code...
// you may have other parameters for particular weapon attributes
var sword = royalArmory.Create(Weapon.sword);

关于c# - 基于类型实例化游戏对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53403685/

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