根据Type实例化gameObject

时间:2018-11-21 00:34:40

标签: c# unity3d

因此,基本上,我正在为一个问题而苦苦挣扎,并希望这里的某人可以为我指明正确的方向。

我随机生成了物品,并且试图实例化所述物品,唯一的问题是,虽然我能够实例化父物品,但我不知道在先是否生成的物品将是“武器/装甲”等等,这些都是Item的继承子级。因此,我能够获得所生成项目的类型,但是在将该类型转换回要实例化的脚本/对象时遇到了麻烦。

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

由于我的Sword类在其Start方法,然后是武器,然后是Item期间加载了数据,因此我不能仅实例化一个Item并知道它是一把剑。 也许我做错了所有事情。

感谢您的阅读!

1 个答案:

答案 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);