跳到主要内容

快速上手

您可以在任何地方启动协程而无需依赖 UnityEngine.MonoBehaviour

using System.Collections;

public class Example
{
public void Start()
{
winS.Unity.Coroutine.Start(LoadCoroutine);
}

private IEnumerator LoadCoroutine()
{
yield return null;
}
}

在协程中等待

若您想在协程中等待,您可以使用 winS.Unity.Coroutine.Wait

您也可以使用 winS.Unity.Coroutine.WaitRealtime 来等待真实时间。

using System.Collections;
using winS.Unity;

public class Example_Wait
{
public void Start()
{
winS.Unity.Coroutine.Start(WaitCoroutine);
}

private IEnumerator WaitCoroutine()
{
yield return new Wait(2f);
}
private IEnumerator WaitRealTimeCoroutine()
{
yield return new WaitRealtime(2f);
}
}

在协程中等待条件成立

若您想在协程中等待指定方法完成,您可以使用 winS.Unity.Coroutine.WaitUntilTrue

using System.Collections;
using UnityEngine;
using winS.Unity;

public class Example_WaitUntilTrue
{
private bool assetloaded;

public void Start()
{
assetloaded = false;
LoadAsset();
winS.Unity.Coroutine.Start(WaitCoroutine);
}

private IEnumerator WaitCoroutine()
{
yield return new WaitUntilTrue(() => assetloaded);
}

private async void LoadAsset()
{
await Awaitable.WaitForSecondsAsync(5f);
assetloaded = true;
}
}