Wie kann ich den Text alle zehn Sekunden verändern?
Also erst einmal hallo. Ich programmiere mit Unity (C#) und möchte einen Code erstellen, der alle zehn Sekunden einen Text verändert.
Wie würde der Code aussehen?
Danke im Voraus.
1 Antwort
In Kombination mit dem Time.deltaTime-Property kann man sich leicht einen Timer basteln.
private float _delay = 10f;
private float _timer = 0f;
void Update()
{
_timer += Time.deltaTime;
if (_timer > _delay)
{
_timer -= _delay;
// change text or do something else ...
}
}
Ich würde schauen, ob das Skript überhaupt ausgeführt bzw. die Update-Methode aufgerufen wird. Es kann ja sein, dass es nicht aktiv ist. Am besten lässt sich der Programmverlauf mit dem Debugger prüfen.
Was meinst du mit (...)
Ich meine die Frage so, wie sie dort steht. Es muss ja einen gewissen Grund für deine Entscheidungen im Code geben. Wenn du den static-Modifier nur dazu missbrauchst, um einfach von überall Zustände ändern zu können, baust du dir schnell eigene Fallen. Es könnte beispielsweise sein, dass du die Variable unbeabsichtigt parallel noch woanders änderst.
_timer sollter eher auf 0 gesetzt werden, anstatt nur _delay von ihm abzuziehen.
Da _timer nur selten einen Wert von genau 10 hat, wird die Variable nach Abzug von _delta immer einen positiven Wert haben.
Sprich beim nächsten Durchlauf startet _timer nicht bei 0, sondern z.B. bei 0.352, wodurch der Timer letztendlich weniger als 10s hochzählt.
Bei einem so "groben" Zeitfenster wie 10 Sekunden wird man das nicht bemerken,
bei kleineren Zeitfenstern kann das aber zu ungewollten Problemen führen.
Natürlich kann man jetzt sagen "hier ist es ja egal", aber warum etwas zweimal lernen, wenn man es einmal für alles Situationen richtig lernen kann. :)
Funktioniert nicht hier nocheinmal der Code:
Dann das 2. Skript Die beiden sind auf dem Text als Copnente drauf