Szukam rozwiązania problemu „Opcje kliknięcia prawym przyciskiem”.
Zasadniczo każdy element w grze, po kliknięciu prawym przyciskiem myszy, może wyświetlić zestaw opcji w zależności od tego, czym jest obiekt.
Przykłady kliknięcia prawym przyciskiem myszy dla różnych scenariuszy :
Inventory: Helmet pokazuje opcje (Equip, Use, Drop, Description)
Bank: Hełm pokazuje opcje (Weź 1, Weź X, Weź wszystko, Opis)
Piętro: kask pokazuje opcje (Take, Walk Here, Description)
Oczywiście każda opcja w jakiś sposób wskazuje na pewną metodę, która robi to, co mówi. Jest to część problemu, który próbuję rozwiązać. Przy tak wielu opcjach poprawiania pojedynczego przedmiotu, jak miałbym tak zaprojektować moje zajęcia, aby nie były wyjątkowo niechlujne?
- Myślałem o dziedziczeniu, ale mogło to być naprawdę długie i łańcuch może być ogromny.
- Myślałem o użyciu interfejsów, ale prawdopodobnie ograniczyłoby to mnie trochę, ponieważ nie byłbym w stanie załadować danych elementu z pliku Xml i umieścić go w ogólnej klasie „Element”.
Opieram pożądany wynik końcowy na grze o nazwie Runescape. Każdy obiekt można kliknąć prawym przyciskiem myszy w grze i w zależności od tego, co to jest i gdzie to jest (ekwipunek, piętro, bank itp.) Wyświetla inny zestaw opcji dostępnych dla gracza do interakcji.
Jak miałbym to osiągnąć? Jakie podejście powinienem zastosować przede wszystkim, zdecydować, które POWINNY zostać wyświetlone, a po kliknięciu, jak wywołać odpowiednią metodę.
Używam C # i Unity3D, ale wszelkie podane przykłady nie muszą być powiązane z żadnym z nich, ponieważ szukam wzorca w przeciwieństwie do rzeczywistego kodu.
Jakakolwiek pomoc jest mile widziana, a jeśli nie wyraziłem się jasno w swoim pytaniu lub oczekiwanych wynikach, proszę o komentarz, a ja postaram się jak najszybciej.
Oto, co dotychczas próbowałem:
- W rzeczywistości udało mi się zaimplementować ogólną klasę „Przedmiot”, która przechowuje wszystkie wartości dla różnych rodzajów przedmiotów (dodatkowy atak, dodatkowa obrona, koszt itp.). Te zmienne są zapełniane danymi z pliku Xml.
- Myślałem o umieszczeniu każdej możliwej metody interakcji w klasie przedmiotów, ale myślę, że jest to niewiarygodnie niechlujna i zła forma. Prawdopodobnie podjąłem niewłaściwe podejście do wdrażania tego rodzaju systemu, używając tylko jednej klasy, a nie podklasowania do różnych elementów, ale jest to jedyny sposób, w jaki mogę załadować dane z Xml i zapisać je w klasie.
- Powodem, dla którego zdecydowałem się załadować wszystkie moje elementy z pliku Xml, jest to, że ta gra ma możliwość ponad 40 000 przedmiotów. Jeśli moja matematyka jest poprawna, klasa dla każdego przedmiotu to wiele klas.