可以代替协程了
但是需要.net4 版本
unity2017以上版本可以用了
再也可以不用蛋疼的没有返回值的协程了
//异步编程,和Task一起用 async void TestAsync(){ //等待2秒 await Task.Delay(2000); int a = 0; while (a < 20) { //空等待 await Task.Yield();//相当于 yield return null a++; print(a); } print("haha"); }
新例子
void Start() { //读取excel //GameReadExcel("/Test/Excel/testExcel.xlsx"); //测试异步编程 TestAsync();//建立异步任务 tcs.SetResult(true);//控制任务完成,不然的话await会一直等待,这句就是设置了Task的返回值,设置了就代表任务完成了,也拿到值了 } async void TestAsync() { await MyTestTask(); Debug.Log("xxxx"); } private TaskCompletionSource<bool> tcs; Task<bool> MyTestTask() { tcs = new TaskCompletionSource<bool>(); Debug.Log("测试task方法"); return tcs.Task; }
更多参考:https://blogs.msdn.microsoft.com/appconsult/2017/08/29/unity-coroutine-tap-zh-cn/