【Unity】UniTask的简单学习总结

为什么使用

UnityCoroutine写法难以维护缺少返回值

若尝试使用async/await 会C#的Task增多频繁触发GC有可能会导致性能问题

UniTask优点

可以支持async/await几乎产生GC

兼容Unity生命周期主线程

WebGL微信小程序IL2CPP稳定运行

UniTask&Coroutine&Task三者

UniTask:

支持返回值,几乎不产生GC(因为是Struct,属于值类型),支持异常捕获,支持取消(通过CancellationToken),IL2CPP稳定运行(WebGL、移动设备的高兼容),支持链式调用提供PlayerLoop集成Unity生命周期

Coroutine:

进行异步操作需要进行手动封装不支持返回(需要用到在外部自定义变量接收值(但是会引发竞态问题,不推荐)或使用回调函数),trycatch不好用、链式调用麻烦Unity生命周期深度集成,稳定运行于WebGL和移动设备中。

Task

支持异步操作支持返回值支持异常捕获、支持取消操作(通过CancellationToken),但是产生大量GC支持链式调用Unity生命周期兼容性较差(unity程序停止,Task有可能还在运行,它不受Unity生命周期自动管理)无法WebGL移动设备高兼容稳定运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值