Создание игрового объекта на основе типа - PullRequest
0 голосов
/ 21 ноября 2018

Так что, в основном, я борюсь с проблемой и надеялся, что кто-то здесь может направить меня в правильном направлении.

Я случайным образом генерирую Предметы и пытаюсь создать экземпляр этих предметов, единственная проблема - пока яЯ могу создать экземпляр родительского предмета, я не буду заранее знать, будет ли сгенерированный предмет «оружием / доспехами» и т. д., которые все являются унаследованными потомками Предмета.Поэтому я могу получить тип сгенерированного предмета, но у меня возникают проблемы с преобразованием этого типа обратно в указанный сценарий / объект для создания экземпляра.

Например: Предмет> Оружие> Меч.Я могу сгенерировать меч и получить тип меча, однако я не могу создать меч, потому что у меня есть только Тип, а не настоящий Меч.

Поскольку в моем классе Меча загружены данныево время его метода Start, затем Weapon, затем Item, я не могу просто создать экземпляр Item и узнать, что это меч.Возможно, я все делаю неправильно.

Спасибо, что прочитали!

1 Ответ

0 голосов
/ 21 ноября 2018

Создание оружия enum

public enum WeaponType {sword, crossbow, q36SpaceModulator }

Используйте это, чтобы сообщить фабрике (@ Draco18s комментарий) что делать - методы создания оружия в этом случае.

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...