Jump to content
Unity Insider Forum
Sign in to follow this  
Albesepp

Was wird zuerst ausgeführt

Recommended Posts

Hallo ich wollte wissen wie ein Script in Unity Engine ausgewertet wird wird da alles gleichzeitig ausgeführt oder das was weiter oben steht im script wird zuerst ausgeführt und dann das darunter und halt nur mega schnell.

z.b

If (Input.GetKey(KeyCode.H)){Debug.Log("1");}
If (Input.GetKey(KeyCode.H)){Debug.Log("2");}
If (Input.GetKey(KeyCode.H)){Debug.Log("3");}

werden da alle gleichzeitig ausgeführt oder eins nach dem anderen also 1 2 3 ?

Und wenn das so ist das alle Gleichzeitig ausgeführt werden gibt es eine Möglichkeit zum Beispiel das 3. zuerst ausführen zulassen und dann das erst und dann das 2.

Bitte beachtet dass ich die 3 If Sätze nur als Beispiel verwendet habe und es sich nicht nur auf den DebugLog beziehen soll.

Danke im voraus ich hoffe man konnte alles verstehen.

Share this post


Link to post
Share on other sites

Also es ist so:

Der Code ansich wird Zeile für Zeile abgearbeitet. Eingabesignale und Ausgaben, z.B. auf den Bildschirm, passieren Frameweise.
Welcher Code wann abgearbeitet wird, hängt davon ab, welche Funktion du nutzt. In der Update Funktion wird einmal pro Frame alles von oben nach unten abgearbeitet. In der FixedUpdate wird einmal pro FixerdTime Intervall der gesammte Code abgearbeitet. Genauso ist das in OnTrigger oder OnCollision Funktionen.
In jedem Script in deiner Szene können unterschiedliche Funktionen drin stehen. Die Funktionen werden alle nach gewissen Intervallen abgearbeitet. Wenn also der Update Zyklus dran ist, werden alle Update Funktionen in allen aktiven Scripts abgearbeitet. Das passiert aber nicht gleichzeitig sondern ein Script nach dem anderen. Welches Script damit anfängt, wird beim Spielstart zufällig festgelegt. Da kann man aber eingreifen und eine Abarbeitungsreihenfolge einstellen.

Wärend eines Frames werden die Scripte also von oben nach unten abgearbeitet. EIn Inputsignal, steht wärend des kompletten Frames an, denn es wird auch nur einmal pro Frame ausgewertet. Somit sollten dein 3 Debugzeilen alle geschrieben werden. Aber der Output wird erst am Ende des Frames gemacht. Also quasi gleichzeitig.
Solltest du beim Drücken der Taste H z.B. etwas berechnen wollen, und du hättest da auch 3 Zeilen, die untereinander stehen, dann würden alle 3 Zeilen genauso von oben nach unten abgearbeitet werden. 

Es geht also immer von oben nach unten. Willst du da dynamisch mal so mal so abarbeiten lassen, musst du dir Bedingungen schaffen. Dann würdest du gewisse Sachen nur dann ausführen, wenn eine bestimmte Bedingung erfüllt ist.

  • Like 1

Share this post


Link to post
Share on other sites

Hallo 

 

Wenn du dein Script so laufen lässt, siehst du auch, dass es Zeile für Zeile abgearbeitet wird. Natürlich Recht schnell, aber eben trotzdem von oben nach unten. Außer es gibt Bedingungen. Diese werden überprüft und dann entweder ausgeführt oder eben nicht. 

 

Christoph 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...