跳到主要内容

快速上手

通过调用winS.Unity.Coroutine.Start方法,您可以在任何位置启动协程而无需依赖UnityEngine.MonoBehaviourUnity Logo

using System.Collections;

public class Example_Start
{
public void StartCoroutine()
{
winS.Unity.Coroutine.Start(MyCoroutine);
}

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

关闭协程

您可以通过调用winS.Unity.Coroutine.Start返回的句柄的Stop方法来关闭协程:

using System.Collections;
using UnityEngine;

public class Example_Stop
{
private winS.Unity.Coroutine coroutine;

public void StartCoroutine()
{
coroutine = winS.Unity.Coroutine.Start(MyCoroutine);
}
public void Stop()
{
coroutine.Stop();
}

private IEnumerator MyCoroutine()
{
while (true)
{
Debug.Log("Coroutine running...");
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;
}
}