/// <summary>Invoke the given action each frame while predicate resolves to true.</summary> /// <param name="mb">The MonoBehaviour to run this from.</param> /// <param name="actionToCall">The action to invoke.</param> /// <param name="predicate">The predicate to check.</param> /// <param name="skipFrames">The amount of frames to skip between actions.</param> public static Coroutine ActionEachFrameWhilePredicate(this MonoBehaviour mb, Action actionToCall, Func <bool> predicate, int skipFrames = 0) { return(mb.ActiveInHierarchy() ? mb.StartCoroutine(mb.ActionEachFrameWhilePredicateCoroutine(actionToCall, predicate, skipFrames)) : null); }