赞
踩
1、使用UniTask替换协程函数的要点是,一个IEnumerator函数对应一个async方法,不可多!本质上是async替换了IEnumerator。
例如我们需要把下面的协程改为UniTask
- private IEnumerator Test1()
- {
- yield return new WaitForSeconds(5);
- Debug.Log("IEnumerator WaitForSeconds 5");
- }
可以改为
-
- public async UniTask Test2()
- {
- await UniTask.WaitForSeconds(5);
- Debug.Log("UniTask WaitForSeconds 5");
- }
使用时注意,使用 _ = Test2(),不可用 await Test2();
- private void Start()
- {
- _ = Test2();
- Debug.Log("after WaitForSeconds 5");
- }
否则Start方法也会被添加async关键字,标记成异步方法
- private async void Start()
- {
- await Test2();
- Debug.Log("after WaitForSeconds 5");
- }
两种输出是截然不同的
这样Test2()函数就变成了异步方法Start()中的一段等待逻辑,与我们原本的初衷背离。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。