Unity3D完美的异步解决UniTask

VegetableChicken
2023-03-01 / 0 评论 / 1,429 阅读 / 正在检测是否收录...
https://zy.hbrely.net 广告

UniTask简介
UniTask的特点

为 Unity 提供有效的无GC async/await集成。
基于Struct UniTask 的自定义 AsyncMethodBuilder,实现零GC,使所有Unity的异步操作和协程可以await
基于PlayerLoop的Task( UniTask.YieldUniTask.DelayUniTask.DelayFrame 等)这使得能够替换所有协程操作
MonoBehaviour 消息事件和 uGUI 事件为可使用Await/AsyncEnumerable
完全在 Unity 的 PlayerLoop 上运行,因此不使用线程,可在 WebGL、wasm 等平台上运行。
异步 LINQ,具有Channel和 AsyncReactiveProperty
防止内存泄漏的 TaskTracker (Task追踪器)窗口
与Task/ValueTask/IValueTaskSource 的行为高度兼容
为什么需要 UniTask(自定义类似Task对象)?
因为原生 Task 太重,与 Unity 线程(单线程)不匹配。UniTask 不使用线程和SynchronizationContext/ExecutionContext,因为 Unity 的异步对象由 Unity 的引擎层自动调度。它实现了更快和更低的分配,并且与Unity完全集成。

插件使用要求
UniTask 功能依赖于 C# 7.0(类似Task的自定义异步方法生成器特性),所以需要的Unity版本是在Unity 2018.3之后,官方支持的最低版本是Unity 2018.4.13f1。

评论 (0)

取消