Jump to content
Unity Insider Forum

Effizientes erstellen eines Menüs


Strooja0108

Recommended Posts

Hi Leute ,

in der Zeichnung könnt ihr sehen wie mein Menü zurzeit aussieht und so würde ich das Layout auch gerne lassen.Nun habe ich folgendes Problem

Die grünen Buttons sollen alle das grüne Kauf Menü aufrufen und sollen nur andere Gegenstände anzeigen(die in unterschiedlichen Listen gespeichert sind). Wenn ich jetzt den Schwert Button  drücke könnte ich eine Methode erstellen die dann das erste Schwert anzeigt.Das ist richtig und so ähnlich mache ich das auch. Das Problem ist die drei roten Buttons müssen ja auch wissen in welchen Listen sie gerade gucken müssen, um das nächste Object anzuzeigen oder um zu überprüfen ob man genug Geld für das Objekt hat. Zurzeit gebe ich den roten Buttons eine Variable mit die von den grünen Buttons kommt, um zu überprüfen welche Listen geladen und angezeigt werden müssen. Z.b. als onclick event  sage ich beim Schwert Button " selection=1 " und überprüfe dann bei den roten Buttons welchen wert "selection" hat und rufe dementsprechend die Listen auf. Würdet ihr das anders lösen? Ich weiss nicht wie ich den roten Buttons mehrere onclick Methoden geben soll und die aufgerufen werden sollen je nachdem welcher grüner Button geklickt wurde. Mehrere Methoden würden es bestimmt übersichtlicher machen.

 

Eine kleine Endfrage habe ich noch. Wenn ich zum Beispiel den Schwert Button klicke möchte ich, dass das grüne Menü aufgeht und rechts die beiden panels mit den buttons sich schliessen.Gibt es da einen besseren weg als immer zu schreiben panel1.setActive(false)  panel2.setActive(false). Gibt es einen Befehl womit man alle schliessen kann und ich mache nur das eine dann wieder auf?

 

Ich bedanke mich schonmal vielmals für eure Hilfe

DesignIdee.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 3.8.2019 um 22:57 schrieb Strooja0108:

Das Problem ist die drei roten Buttons müssen ja auch wissen in welchen Listen sie gerade gucken müssen, um das nächste Object anzuzeigen oder um zu überprüfen ob man genug Geld für das Objekt hat.

Wieso müssen das die Buttons wissen?
Geh doch mal anders an die Sache heran:
Stell dir mal vor, die Buttons wären Leute in einer Fabrik, die einer Tätigkeit nachgehen. Die bearbeiten einfach ein Dingen nach Vorgabe, egal was später daraus wird.
So ist das auch bei den Buttons. Jeder Button warten nur auf einen Klick um dann in eine definierte Methode rein zu springen. Was da drin passiert, kann den Buttons total egal sein.

Innerhalb der Methode, wird ausgewertet was als nächstes passiert und ob überhaupt etwas passiert. Denn dort, oder in dem Script der Methode, ist ja klar, welche Liste gerade genutzt wird.
Ob ein Button jetzt aktiv ist, und/oder welche Erscheinung er haben soll, könnte der Button für sich selber in Erfahrung bringen. Das kann aber auch von Außen gesteuert werden.
Das ist eine Sache der Vorliebe und hängt davon ab, wie viele UI Objekte sich verändern sollen. Wenn du also den Kaufbutton disablen willst, wenn nicht genug Geld für das angezeigte Objekt da ist, könnte der Button eine Variable abfragen oder auf ein Event warten. Es kann aber genau so gut ein Verwaltungsscript den Button disablen bzw. enablen wenn die richtige Bedingung eingetreten ist.

Außerdem: Buttons sind auch nur Gameobjects. Du kannst sie also einem EmptyObject unterordnen und dieses dann Aktivieren oder deaktivieren. Wenn der Vater deaktiviert wurde, sind die Kinder auch deaktiviert. So kannst du ganz leicht komplette Gruppen innerhalb eines Canvas ein- oder aussschalten. Oder auch einfach wo anders positionieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

hey danke fuer deine Antwort. Das ist exakt das was ich tue. Ich rufe bei jedem Button zurzeit eine Methode auf und in dieser wird als erstes ueberpueft um welche Items es geht die gerade angezeigt werden sollen.Diese information gebe ich den gruenen buttons mit einer variable mit. Auf den vorher und nachher button ueberpruefe ich zum beispiel dann welches object als naechstes in der liste steht und ob man genug geld dafuer hat .Je nachdem wird der "buy button" enabled or disabled. Ich hatte in meinem anderen thread nur verstanden,dass das nicht die beste art waere. Weil die 3 methoden natuerlich schon recht voll sind.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also es ist ja so, dass du irgendwo deine Listen abarbeiten musst. Ob das nun direkt in einer Methode ist oder woanders, ist erst einmal egal. Ich persönlich würde es aber nicht innerhalb der Methode machen, in die der Button etwas sendet. Die Methode dient ja lediglich dazu, zu registrieren, dass ein UI Element etwas gemacht hat. Du kannst da einfach eine Variable verändern, die ein anderer Codebereich für die Listenabarbeitung nutzt. Das würde das Ganze übersichtlicher machen, denn die Buttons wären aus der Verarbeitung dann einfach heraus genommen. Aber wie gesagt; irgendwo musst du duch die Listen gehen. Entscheide selbst und lerne dabei ob es gut war oder eher nicht. ;)
Ich selber verändere ständig meine Herangehensweise bei neuen Projekten denn ich habe auch noch keinen goldenen Weg gefunden. Aber es wird jedes Mal besser! :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...