private IEnumerator _CoWhen(Func<bool> retBool, float timeout, Action next) { var time = 0f; while (!(retBool())) { time += Time.deltaTime; if (time > timeout) { Log.Error("[KAsync:When]A WHEN Timeout!!!"); break; } yield return null; } next(); }