Ich suche nach einer Lösung für das Verhalten "Rechtsklickoptionen".
Grundsätzlich kann jeder Gegenstand in einem Spiel, wenn mit der rechten Maustaste darauf geklickt wird, eine Reihe von Optionen basierend auf dem Objekt anzeigen.
Rechtsklick-Beispiele für verschiedene Szenarien :
Inventar: Helm zeigt Optionen (Ausrüsten, Benutzen, Ablegen, Beschreibung)
Bank: Helm zeigt Optionen (Take 1, Take X, Take All, Beschreibung)
Etage: Helm zeigt Optionen (Take, Walk Here, Description)
Offensichtlich verweist jede Option irgendwie auf eine bestimmte Methode, die das tut, was gesagt wird. Dies ist ein Teil des Problems, das ich herauszufinden versuche. Wie würde ich bei so vielen Potenzierungsoptionen für einen einzelnen Gegenstand meine Klassen so gestalten, dass sie nicht extrem chaotisch sind?
- Ich habe über Vererbung nachgedacht, aber das könnte sehr langwierig sein und die Kette könnte riesig sein.
- Ich habe über die Verwendung von Schnittstellen nachgedacht, aber dies würde mich wahrscheinlich ein wenig einschränken, da ich keine Artikeldaten aus einer XML-Datei laden und in eine generische "Item" -Klasse einfügen könnte.
Ich stütze mein gewünschtes Endergebnis auf ein Spiel namens Runescape. Jedes Objekt kann im Spiel mit der rechten Maustaste angeklickt werden. Abhängig davon, was es ist und wo es sich befindet (Inventar, Etage, Bank usw.), werden dem Spieler verschiedene Optionen zur Interaktion angeboten.
Wie würde ich das erreichen? Wie gehe ich vor? Entscheide, welche Optionen angezeigt werden SOLLTEN und wie die entsprechende Methode aufgerufen werden soll.
Ich verwende C # und Unity3D, aber die bereitgestellten Beispiele müssen sich nicht auf eines von beiden beziehen, da ich nach einem Muster im Gegensatz zum tatsächlichen Code arbeite.
Jede Hilfe wird sehr geschätzt und wenn ich in meiner Frage oder den gewünschten Ergebnissen nicht klar war, schreibe bitte einen Kommentar und ich werde mich so schnell wie möglich darum kümmern.
Folgendes habe ich bisher versucht:
- Ich habe es tatsächlich geschafft, eine generische "Item" -Klasse zu implementieren, die alle Werte für verschiedene Arten von Gegenständen enthält (zusätzlicher Angriff, zusätzliche Verteidigung, Kosten usw.). Diese Variablen werden mit Daten aus einer XML-Datei gefüllt.
- Ich habe darüber nachgedacht, jede einzelne mögliche Interaktionsmethode in die Item-Klasse aufzunehmen, aber ich denke, das ist eine unglaublich chaotische und schlechte Form. Ich habe wahrscheinlich den falschen Ansatz gewählt, um diese Art von System zu implementieren, indem ich nur eine Klasse verwendet habe und keine Unterklassen für verschiedene Elemente erstellt habe. Es ist jedoch die einzige Möglichkeit, die Daten aus einer XML-Datei zu laden und in der Klasse zu speichern.
- Der Grund, warum ich mich dazu entschlossen habe, alle meine Artikel aus einer XML-Datei zu laden, ist, dass dieses Spiel die Möglichkeit hat, mehr als 40.000 Artikel zu speichern. Wenn meine Mathematik stimmt, besteht eine Klasse für jeden Gegenstand aus vielen Klassen.