Ich habe ein separates Skript der Zeit, die ich verwende, um Zeit in meiner Szene zu zeigen. Es enthält Stunden und Minuten und Sekunden Variable. Ich möchte einige bestimmte Arbeit, zum Beispiel, Code-Ausführung zu bestimmten Zeit und derzeit mache ich etwas wie dies tun. im Update. Ich führe eine Funktion aus, die kontinuierlich die Zeitvariable überprüft, um eine Animation auszuführen.Vermeiden Sie "Update" zu verwenden?
void Update()
{
checkTrainArriveTime();
}
void checkTrainArriveTime()
{
if (timeManager.GetComponent<Scale2>().hour == trainArriveTimeHour && timeManager.GetComponent<Scale2>().min == trainArriveTimeMin
&& isTrainArriveConditionExecute)
{
isTrainArriveConditionExecute = false;
PlayAnimationClip("Start");
}
else if (timeManager.GetComponent<Scale2>().min != trainArriveTimeMin)
{
isTrainArriveConditionExecute = true;
}
}
Wenn die Zeit übereinstimmt, spielt diese Funktion die Animation ab. Jetzt habe ich 50 Skripte an 50 verschiedene Spielobjekte angehängt. Es ist funktioniert gut, aber es ist definitiv nicht der richtige Weg, Update Event zu verwenden. In meinem Code ist es notwendig, die Zeit für jeden Frame zu überprüfen und zusätzliche Last auf Update. Gibt es einen effizienten Weg, um diesen Job zu machen?
Wenn es notwendig ist, die Zeit jedes Frames zu überprüfen, dann müssen Sie Update verwenden. Für eine bessere Leistung würde ich empfehlen, GetComponent <>() nicht im eigentlichen Update zu verwenden. Verwenden Sie es einmal bei Start(), um einen Verweis auf Scale2 zu erhalten, und verwenden Sie diesen Verweis. –
Es ist sehr wahrscheinlich, dass Sie UnityEvent von Unity verwenden müssen, was sehr einfach ist und eines der besten Dinge in Unity ist: http://StackOverflow.com/a/36249404/294884 – Fattie
@JoeBlow Danke für Ihren Rat, aber ich habe die Das gleiche Problem der Pause. Zusätzlich kann die Zeitgebergeschwindigkeit durch den Benutzer, der die GUI verwendet, beschleunigt werden. also ruf auch nicht für mich an. –