SyntaxTalkstoMe Geschrieben 13. Juni 2018 Melden Share Geschrieben 13. Juni 2018 Hallihallo, ich bin aktuell fleissig das Tutorial von Malzbie durchzuarbeiten. Jetzt war ich wirklich einige Stunden mit einem Problem beschäftigt. Den Grund, auch wenn er mir nicht schlüssig ist, habe ich nur durch try and Error herausgefunden. Und zwar handelt es sich um diese schmucken Codezeilen: public bool schildAn; private Animator anim; // Use this for initialization void Awake() { anim = GetComponent<Animator>(); } // Update is called once per frame void Update() { if (schildAn) { anim.SetBool("schildAn", true); schildAn = false; StartCoroutine(MachAus()); } } IEnumerator MachAus() { yield return (new WaitForSeconds(0.5f)); anim.SetBool("schildAn", false); } } Wie ihr seht, heißt der bool am oberen Ende des Codes "schildAn". Dieser bekommt einen Zustand über eine Zuweisung. Also z.b "schildAn = false". Also wie in den Codezeilen. Um auf die Transitions im Animator zuzugreifen, nutze ich ja "anim.SetBool("schildAn", false)". Ich hatte im Animator anfangs einen anderen Namen als "schildAn" und da hat nichts geklappt. Jetzt heißt der "bool" im Animator genauso wie die "bool" Variable und nun geht es. Sicherheitshalber hatte ich aus Spaß den Namen der bool Variable geändert. Und siehe da, es ging wieder nicht. Es lag also definitiv daran. Ich verstehe nur nicht warum. Das sind doch zwei verschiedene paar Schuhe. Danke im Voraus und schöne Nacht noch Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 13. Juni 2018 Melden Share Geschrieben 13. Juni 2018 Du hattest mich ja per Mail angeschrieben. Darauf hab ich geantwortet. Musst dann mal in deinen Posteingang schauen. Hier will ich dir aber auch noch mal antworten. Dass die boolesche Variable genau so heißt, wie der Parameter im Animator ist reiner zufall. Das hat aber nichts mit der Funktion zu tun. Die boolesche Variable, hier im Script, kann heißen wie sie will. Aber da sie ja von außen auf true gesetzt wird, muss das andere Script sie natürlich auch genauso ansprechen. Wenn du nachträglich den Varaiblennamen in diesem Script änderst, dann weiß das andere Script ersteinmal nichts davon und kann sie auch nicht ansprechen. Du wirst aber sofort einen Fehler in der Consosle angezeigt bekommen. Denn das andere Script will ja jetzt eine Variable beschreiben, die gar nicht vorhanden ist. Änderst du also hier den Variablennamen, dann musst du das auch im anderen Script machen. Jedenfalls in diesem Fall, wo die Variable direkt angesprochen wird. Beim Animator-Parameter und dem SetBool Befehl ist das genauso. Du kannst auch hier den Parameter nennen wie du willst. Aber du musst dann auch genau diesen Namen beim Befehl nutzen. Tust du das nicht, läuft der Befehl ins Leere. Nennst du den Parameter im Animator "schildan" (mit kleinem A), schreibst im Befehl aber SetBool("schildAn",true) mit großem A, dann kann der Animator damit nichts anfangen, denn er kennt schildAn mit großem A nicht! Das ist die ganze Magie dahinter! In jeder Abfrage oder bei jedem Setzen eines Wertes in einer Variable, wird geschaut ob das Element denn überhaupt da ist. Wenn du mir sagt, ich soll der Heidi mal 5 € geben, dann kann ich das nur machen, wenn die Heidi auch hier ist und ich sie kenne. Komponenten sind auch nur Menschen! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.