JS异步和UniTask(Unity)

unity C#异步和JS异步

  • JS异步函数:async/await,在awaii处得到Promise(期约)的“完成”或“未完成”状态前暂停了异步函数,得到后恢复执行。
async a(){
	let p = new Promise((resolve,reject) => {
		setTimeout(resolve,1000,3);	
	})
	console.log(await p);//3
}

相当于Unity的yield return new WaitForSeconds(1);

  • UniTask
    提供了类似的于JS的操作异步函数的一系列API,所有对异步函数的暂停和恢复执行,都可以用await UniTask…的形式代替(比如等待网页的报文、等待资源加载完成、或直接等待若干秒)。
using Cysharp.Threading.Tasks;
public class Demo{
	async UniTask demoAsync(){
		var t = await Resources.LoasAsync("foo");
		await UniTask.Delay(TimeSpan.FromSeconds(10),
			ignoreTimeScale:false);
		return t?.text ?? throw InvalidOperationException("None");
	}
}

C#新特性,运算符?.指当前者不为空时取得.之后的属性。??判空。但这两个运算符不要用在对"物体身上某组件是否为空“的判断上。

你可能感兴趣的:(c#,Unity,unity3d,c#)