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?
1 Antwort
![](https://images.gutefrage.net/media/user/OctoMan/1562599040831_nmmslarge__0_0_1024_1024_3ee6d102f9fff3b8eb89a9336cca61ab.png?v=1562599041000)
Die Update Loop sollte nur für Inputs genutzt werden.
Wenn du etwas ausführen willst erstelle dir eine Funktion die Triggert wenn schaden genommen wird, und messe nach Messung des Schadens ob noch Rest leben vorhanden ist. Das ist wesentlich Ressourcen-sparender.
Man muss ja nicht 60x Pro Sekunde checken ob sich etwas verändert hat.
Hier ist nen recht altes Video von mir, aber das sollte es nochmal verdeutlichen.
![](https://images.gutefrage.net/media/default/user/12_nmmslarge.png?v=1551279448000)
Ok, ich bin das komplett falsch angegangen... da werde ich einiges korrigieren müssen. Was genau sind Inputs oder was meinst du damit? Kenne mich mit den Fachbegriffe nicht so aus.
Btw dein Englisch ist echt gut dafür, dass du wahrscheinlich deutsch bist ^^