/// <summary> /// Advanced invoke method to call with parameters. /// </summary> /// <param name="delay">Delay time in seconds.</param> /// <param name="repeatRate">Delay time in seconds until repeat.</param> /// <param name="method">Method to run after delay.</param> /// <param name="args">Method arguments.</param> public static void AdvancedInvokeRepeating (float delay, float repeatRate, Action <ChainArgs> method, params object[] args) { ChainArgs chainArgs = new ChainArgs(args); _instance.StartCoroutine(_instance.UnityCoroutine(delay, method, chainArgs)); }
private IEnumerator UnityCoroutineRepeat(Action <ChainArgs> method, ChainArgs args, float delay, float repeatRate, float repeatTimes = -1) { yield return(new WaitForSeconds(delay)); if (repeatTimes < 0) { while (true) { method(args); yield return(new WaitForSeconds(repeatRate)); } } else { for (int i = 0; i < repeatTimes; i++) { method(args); yield return(new WaitForSeconds(repeatRate)); } } }
private IEnumerator UnityCoroutine(float delay, Action <ChainArgs> method, ChainArgs args) { yield return(new WaitForSeconds(delay)); method(args); }