Я ищу решение для поведения "Параметры правой кнопки мыши".
По сути, любой элемент в игре, если щелкнуть правой кнопкой мыши, может отображать набор параметров в зависимости от того, что это за объект.
Щелкните правой кнопкой мыши примеры для различных сценариев :
Инвентарь: Шлем показывает опции (Экипировка, Использование, Сброс, Описание)
Банк: Шлем показывает варианты (Take 1, Take X, Take All, Описание)
Этаж: шлем показывает варианты (возьми, иди сюда, описание)
Очевидно, что каждая опция как-то указывает на определенный метод, который делает то, что говорит. Это часть проблемы, которую я пытаюсь выяснить. С таким большим количеством возможностей для одного предмета, как бы мои классы были спроектированы таким образом, чтобы не быть слишком грязными?
- Я думал о наследовании, но это может быть очень долго, и цепь может быть огромной.
- Я думал об использовании интерфейсов, но это, вероятно, немного ограничило бы меня, так как я не смог бы загрузить данные элементов из файла XML и поместить их в общий класс «Item».
Я основываю свой желаемый конечный результат на игре под названием Runescape. Каждый объект можно щелкнуть правой кнопкой мыши в игре и в зависимости от того, что это такое и где он находится (инвентарь, пол, банк и т. Д.), Отображает различный набор параметров, доступных игроку для взаимодействия.
Как бы я пошел для достижения этого? Какой подход я должен использовать в первую очередь, чтобы решить, какие параметры ДОЛЖНЫ отображаться, и после щелчка выбрать способ вызова соответствующего метода.
Я использую C # и Unity3D, но любые приведенные примеры не обязательно должны быть связаны ни с одним из них, так как я использую шаблон, а не реальный код.
Любая помощь очень ценится, и если я не получил четкого ответа на свой вопрос или желаемых результатов, пожалуйста, оставьте комментарий, и я буду стремиться к нему как можно скорее.
Вот что я пробовал до сих пор:
- Мне действительно удалось реализовать универсальный класс «Предмет», который содержит все значения для различных типов предметов (дополнительная атака, дополнительная защита, стоимость и т. Д.). Эти переменные заполняются данными из файла XML.
- Я думал о размещении всех возможных методов взаимодействия внутри класса Item, но я думаю, что это невероятно грязная и плохая форма. Я, вероятно, выбрал неправильный подход для реализации системы такого типа, используя только один класс, а не подклассифицируя различные элементы, но это единственный способ, которым я могу загрузить данные из Xml и сохранить их в классе.
- Причина, по которой я решил загрузить все свои предметы из XML-файла, заключается в том, что в этой игре есть возможность более 40 000 предметов. Если моя математика верна, класс для каждого предмета - это много классов.