Jump to content
Unity Insider Forum

GUI.xxx nach Benutzung verschwinden lassen


Recommended Posts

Hi,

 

ich hab mal wieder eine Frage:

 

Und zwar geht es diesmal darum, dass wenn ich auf den GUI.Button 'Optionen' drücke, dann die Optionen auftauchen sollen.

Alles in Ordnung, kein Problem, aber jetzt:

Wenn man dann auf einen anderen Button von GUI klickt, sollen die Optionen verschwinden.

Daran scheitere ich gerade.^^

 

Ich hoffe ihr könnt mir (mal wieder) helfen!

 

Danke,

 

Unspeed (Juli)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du musst Dir irgendwo eine Variable für "Optionen anzeigen" speichern:

var showOptions : boolean = false;

function OnGUI()
{
if(GUI.Button(Rect(10,10,100,24), "anzeigen"))
 showOptions = true;
if(showOptions)
{
 GUI.Button(Rect(120,10,100,24), "optionsknopf")
 if(GUI.Button(Rect(120,40,100,24), "verstecken"))
  showOptions = false;
}
}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja, aber das lässt die GUIs ja nicht verschwinden, oder?

Doch.

Kann man das so realisieren?

Nein. Dann hättest Du eine Endlosschleife und dein Spiel stürzt ab.

 

Probiere doch einfach mal meinen Code als Skript aus.

 

Du hast schon eine Schleife, die Du nicht siehst, weil Uniy sich darum kümmert, die sieht in etwa so aus, Pseudocode:

while( irgendwas )
{
mit jedem GameObject
{
 Update();
 OnGUI();
 LateUpdate();
 ....
}
}

 

OnGUI() wird in jedem Frame ausgeführt.

Wenn Du in OnGUI() reinschreibst "mal eine Box" dann wird jedem Frame eine Box gemalt.

und wenn Du davor "nur wenn showOptions an ist" schreibst, dann schaut in jedem Frame erstmal nach, ob er das wirklich tun soll.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, "== true" kannst Du immer weglassen und "== false" durch ein anführendes "!" ersetzen.

if(!showOptions)

 

Jetzt mal was echt interessantes:

In einer if-Abfrage muss immer ein boolean-Wert stehen (logisch - mit "Wenn 7" oder "Wenn Gurke" kann auch keiner was anfangen).

Sicherlich hat jeder schonmal das gesehen:

if(x == 9)

Jetzt denke man mal nach: "x == 9" muss ja ein boolean sein.

== ist daher ein Operator, der zwei Variablen gleichen oder vergleichbaren Typs vergleicht und true oder false zurück gibt.

Man kann tatsächlich sowas schreiben:

if(5 == 5 == true)

Kannst mal ausprobieren, funktioniert wirklich ^^

 

"== true" kannst du somit immer weg lassen, und außerdem kannst Du das in Zuweisungen verwenden:

var fiveIsFive : boolean = 5 == 5;

Auch das funktioniert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...