protected void SetTrue(string exitParameter, Action callback) { var info = new RoutineInfo { TrueParameter = exitParameter, FalseParameter = exitParameter, Callback = callback }; const string methodName = nameof(Exit); StopCoroutine(methodName); StartCoroutine(methodName, info); }
IEnumerator Exit(RoutineInfo info) { // trigger einen neuen State "andere Animation wird gestartet" anim.SetBool(info.TrueParameter, true); // warte bis das umgesetzt ist yield return(new WaitUntil(() => anim.GetBool(info.TrueParameter) && checkAnimationRunning(0))); // warte bis die Animation vorbei ist while (checkAnimationRunning(0)) { yield return(null); } // schalte die Animation wieder ab anim.SetBool(info.FalseParameter, false); // warte bis das umgesetzt ist yield return(new WaitUntil(() => !anim.GetBool(info.TrueParameter))); // was soll nach der Animation passieren // -- canvas.setActive(false) info.Callback?.Invoke(); }