Я шукаю рішення для поведінки "Параметри правої кнопки".
В основному будь-який предмет у грі, при натисканні правою кнопкою миші, може відображати набір опцій, залежно від того, що є об’єктом.
Приклади правою кнопкою миші для різних сценаріїв :
Інвентар: Шолом показує варіанти (Оснащення, використання, скидання, опис)
Банк: Шлем показує варіанти (Take 1, Take X, Take All, Опис)
Поверх: Шлем показує варіанти (Take, Walk Here, Опис)
Очевидно, кожен варіант якимось чином вказує на певний метод, який робить те, що говориться. Це частина проблеми, яку я намагаюся розібратися. З такою кількістю варіантів потенціалу для одного предмета, як би я створив свої заняття таким чином, щоб не бути надзвичайно безладним?
- Я думав про спадщину, але це могло б бути насправді довго накрученим і ланцюжок може бути величезною.
- Я думав про використання інтерфейсів, але це, ймовірно, трохи обмежить мене, оскільки я не зможу завантажити дані елемента з Xml-файлу та розмістити їх у загальному класі "Item".
Я базую свій бажаний кінцевий результат на грі під назвою Runescape. Кожен об’єкт може клацнути правою кнопкою миші в грі, і залежно від того, що він є, і де він знаходиться (інвентар, підлога, банк тощо), відображається різний набір опцій, доступних гравцю для взаємодії.
Як би я міг досягти цього? Який підхід слід застосувати, перш за все, вирішити, які параметри ОБОВ'ЯЗКОВО відобразити та натиснути один раз, як викликати відповідний метод.
Я використовую C # і Unity3D, але будь-які надані приклади не повинні бути пов’язані з жодним із них, оскільки я за шаблоном на відміну від фактичного коду.
Будь-яка допомога дуже вдячна, і якщо я не зрозумів свого запитання чи бажаних результатів, будь ласка, опублікуйте коментар, і я схиляюся до цього якнайшвидше.
Ось що я спробував поки що:
- Мені вдалося реалізувати загальний клас "Item", який містить усі значення для різних типів предметів (додаткова атака, додаткова захист, вартість тощо ...). Ці змінні заповнюються даними з файлу Xml.
- Я думав над тим, щоб розмістити кожен можливий метод взаємодії всередині класу Item, але думаю, що це неймовірно безладно і погано. Я, мабуть, прийняв неправильний підхід до впровадження такої системи, використовуючи лише один клас і не підкласифікуючись на різні елементи, але єдиний спосіб я можу завантажувати дані з Xml та зберігати їх у класі.
- Причина, по якій я вирішив завантажити всі мої предмети з файлу Xml, пов’язана з цією грою, яка має можливість для 40 000+ предметів. Якщо моя математика правильна, клас для кожного предмету - це багато класів.