快速上手
通过调用winS.Unity.Coroutine.Start方法,您可以在任何位置启动协程而无需依赖UnityEngine.MonoBehaviour
:
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;
}
}