因此,基本上,我正在为一个问题而苦苦挣扎,并希望这里的某人可以为我指明正确的方向。
我随机生成了物品,并且试图实例化所述物品,唯一的问题是,虽然我能够实例化父物品,但我不知道在先是否生成的物品将是“武器/装甲”等等,这些都是Item的继承子级。因此,我能够获得所生成项目的类型,但是在将该类型转换回要实例化的脚本/对象时遇到了麻烦。
例如: 物品>武器>剑。 我能够生成一把剑,并获得一把剑的类型,但是我无法实例化一把剑,因为我只有类型,而没有真正的剑。
由于我的Sword类在其Start方法,然后是武器,然后是Item期间加载了数据,因此我不能仅实例化一个Item并知道它是一把剑。 也许我做错了所有事情。
感谢您的阅读!
答案 0 :(得分:2)
制造武器enum
public enum WeaponType {sword, crossbow, q36SpaceModulator }
使用它来告诉您的factory (@Draco18s comment)要建造什么-在这种情况下用于制造武器的方法。
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);