Я сталкиваюсь с проблемой попытки внедрить систему инвентаризации в XNA (не имеет значения, может быть любая платформа), но пока. Вот проблема, которую я пытаюсь обернуть вокруг:
Как я могу получить предмет из мира (подумайте, когда вы убиваете монстра, он сбрасывает броню) и доставляет его в инвентарь моего игрока?
Если инвентарь - это просто список предметов, технически, как я могу получить Стальной Меч из мира в инвентарь моего игрока, не имея класса, делающего больше чем одну вещь?
В настоящее время у меня есть структура элементов, которая содержит уникальное шестнадцатеричное значение, счетчик количества элементов (для наращиваемых элементов, таких как стрелки) и текстуру для рендеринга в инвентаре, а также некоторые другие неважные свойства (имя, описание и т. Д.) ,
Было бы плохо проектировать, если бы мне пришлось изменить свой существующий класс предметов, чтобы разместить мировую позицию, наряду с обнаружением столкновений (не хочу, чтобы предмет падал сквозь землю).
Спасибо за любые соображения!
WorldItem
что-то отдельное от твоегоInventoryItem
? (Может быть,WorldItem
естьInventoryItem
шаблон, который помещается в инвентарь игрока при поднятии).Inventory
который принимаетWorldItem
и добавляет его какInventoryItem
. Так что он также может обрабатывать случаи, когда предметы должны складываться (например, стрелки).Ответы:
Подход, который я бы выбрал, состоит в том, чтобы иметь 2 разных структуры (или класса).
WorldItem
иInventoryItem
.Затем вы можете добавить в
InventoryItem
качестве своего свойства / поляWorldItem
то, что будет помещено в инвентарь игрока при поднятии предмета мира.Вы бы хотели где-нибудь метод (в классе игрока или в классе предметов), который обрабатывает добавление предмета инвентаря в инвентарь игрока, чтобы иметь дело со сложением предметов.
источник
Как уже упоминалось, прежде чем разбить на несколько классов или массивов, будет лучшим выбором. Я бы создал 3 класса, World, Player и Item. В мировом классе был бы List WorldItems, так же как и класс Player, но с именем List Inventory. Когда игрок берет предмет, вы перемещаете его из списка в Мире. Класс к списку в классе Player.
В цикле рисования вашей игры вы можете создать цикл, который рисует все элементы из списка WorldItems на экране, но, конечно, игнорирует список инвентаря на объекте игрока.
источник