static IEnumerator WaitForAnimComplete(this Animator animator, Action callback) { yield return(new WaitForSecondsRealtime(Time.fixedUnscaledDeltaTime)); while (animator && animator.GetCurrentAnimatorStateInfo(0).normalizedTime < 1) { yield return(null); } if (!_animatorDict.ContainsKey(animator)) { yield break; } WaitCallback waitCallback = _animatorDict[animator]; _animatorDict.Remove(animator); if (waitCallback.Callback != null) { waitCallback.Callback(); } }