Unity – die neusten Beiträge

Unity - Kann eine Funktion ausgelöst werden, sobald ein Variable Wert sich ändert?

Hallo.

ich habe in meinem spielt sehr viele Funktionen, die über public void update laufen, also jeden Frame ausgelöst werden. Zum Beispiel:

if (Leben == 0)

{
Destroy(gameObject);
}

Ich mache mir dabei ein wenig Sorgen, dass es es von der Leistung zu viel wird für das Gerät auf dem das Spiel läuft. Besonders, weil ich mir denke, dass es bei vielen Funktionen gar nicht nötig ist jeden Frame abgefragt zu werden, weil sie nur paar mal ausgelöst werden. Deshalb wollte ich mal fragen, ob es möglich ist, dass eine Funktion nur dann ausgelöst wird, sobald der Wert einer Variable sich verändert. Zum Beispiel soll Funktion a ausgelöst werden, sobald int Leben seinen Wert ändert z.B. von 10 auf 9. klar könnte ich den Wert abspeichern und sobald der aktuelle Wert nicht mehr den abgespeicherten Wert entspricht wird die Funktion dann ausgelöst, aber dann nutze ich ja auch wieder public void update um das abzufragen.
Wie machen das gewöhnlich die Profis? Lassen sie wirklich Funktionen wie diese jeden Frame abfragen? Bitte um Hilfe!

Und dazu würde mich auch interessieren, wie sehr belastet zum Beispiel das obige Beispiel die Leistung eines Geräts, wenn 100 Funktionen wie diese jeden Frame abgefragt werden? Gibt es ein Maß an den man sich richten sollte oder kann ein gewöhnliches Gerät sogar bedenkenlos viele solcher Funktionen per Frame mit Leichtigkeit abfragen?

Computer, Leistung, Unity

Unity GameObject deaktivieren?

Ich habe ein Einstellungsmenü. Wenn ich in dieses Menü komme, möchte ich das, dass Panel sound sichtbar wird und das Panel keybinds unsichtbar. Das Problem ist allerdings, dass es nicht funktioniert. Es funktioniert nur wenn ich zB. auf den Button Sound oder Keybinds drücke, dann wird das eine sichtbar und das andere unsichtbar. (Wenn ich auf den Button Sound klicke, dann wird show_hide_sound() ausgeführt).

Allerdings werden mir so, am Anfang beide Panels angezeigt, obwohl ich bei der start() funktion das eine "deaktiviere".

Was könnte da der Fehler sein?

public GameObject sound;
public GameObject keybinds;

public int sound_zahl = 1;
public int keybind_zahl = 0;

void start()
   {
       keybinds.SetActive(false);
       sound.SetActive(true);
   }
public void show_hide_sound()
   {
       keybind_zahl = 0;
       if (sound_zahl == 0)
       {
           sound.SetActive(true);
           keybinds.SetActive(false);
           sound_zahl++;
       }
   }

public void show_hide_keybinds()
   {
           sound_zahl = 0;
           if (keybind_zahl == 0)
           {
               keybinds.SetActive(true);
               sound.SetActive(false);
               keybind_zahl++;
           }
       }
Computer, programmieren, Unity

Meistgelesene Beiträge zum Thema Unity