/// <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);
 }