📜  unity repeat coroutine - C# (1)

📅  最后修改于: 2023-12-03 15:20:52.322000             🧑  作者: Mango

Unity Repeat Coroutine - C#

在 Unity 中,我们可以使用协程(Coroutine)执行一些需要分步完成的任务,例如等待一段时间后再执行下一步操作,或者执行一个需要持续一段时间的操作等等。而当我们需要对某些任务进行重复执行时,我们可以使用 Repeat Coroutine 来简化代码逻辑。

Repeat Coroutine 是什么?

Repeat Coroutine 是一个基于 Unity Coroutine 的扩展功能,它允许我们在 Coroutine 中轻松地执行循环操作,而不需要编写冗长的循环代码块。

如何使用 Repeat Coroutine?

在 Unity 中,我们可以使用以下代码来使用 Repeat Coroutine:

using System.Collections;
using UnityEngine;

public static class CoroutineExtensions
{
    public static IEnumerator Repeat(this MonoBehaviour obj, int times, float delay, System.Action action)
    {
        for (int i = 0; i < times; i++)
        {
            action();
            yield return new WaitForSeconds(delay);
        }
    }
}

在上述代码中,Repeat Coroutine 是作为一个 IEnumerator 的扩展方法来实现的。我们可以将其添加到任何一个 MonoBehaviour 中,然后在协程中调用。

void Start()
{
    StartCoroutine(RepeatCoroutine());
}

IEnumerator RepeatCoroutine()
{
    yield return StartCoroutine(this.Repeat(5, 1f, () =>
    {
        Debug.Log("Hello World!");
    }));
}

上述代码的执行结果是在控制台中打印出 5 次 "Hello World!"。

Repeat Coroutine 的参数

Repeat Coroutine 共有 3 个参数,分别为:

  • times:需要执行循环操作的次数。
  • delay:每次循环操作的间隔时间,单位为秒。
  • action:每次循环操作需要执行的方法。
总结

Repeat Coroutine 可以帮助我们简化在 Coroutine 中的循环操作,使代码更加简洁易懂。但需要注意的是,由于是基于 Coroutine 实现的,所以在使用时需要注意协程的执行顺序,避免出现意外情况。