一款基于 uGUI 的 Unity 游戏内调试控制台,可在构建版本中查看日志并执行调试命令。
Cysharp/UniTask
面向 Unity 的零分配 async/await 集成库,让 AsyncOperation、协程和事件可直接 await,基于 PlayerLoop 运行。
- Star
- 11,259
- Fork
- 1,012
- 未关闭 Issue
- 26
- 最近提交
- 13天前
这是什么?
UniTask 是一个面向 Unity 的 C# 库,提供基于结构体的 UniTask<T> 类型和自定义的 async 方法构建器,目标是减少 async/await 代码中的堆内存分配。它可以直接 await Unity 的 AsyncOperation、协程(IEnumerator)以及 MonoBehaviour 消息事件,并提供基于 PlayerLoop 的 Delay、DelayFrame、Yield、WaitUntil 等方法,替代常见的协程写法。
UniTask 完全运行在 Unity 的 PlayerLoop 上,不使用线程或 SynchronizationContext,因此可以在 WebGL、WASM 等平台运行。库中还包括基于 CancellationToken 的取消与超时工具、用于排查任务泄漏的 UniTask Tracker 编辑器窗口、支持 await foreach 的异步 LINQ,以及 Channel 和 AsyncReactiveProperty 等类型。
该库要求 Unity 2018.3 或更高版本,可通过 UPM 的 git 地址安装,也可以使用 .unitypackage 导入。TextMeshPro、Addressables 和 DOTween 的集成以独立程序集的形式提供。
核心功能
- 01基于结构体的 UniTask<T> 与自定义 async 方法构建器,减少内存分配。
- 02可直接 await Unity 的 AsyncOperation、IEnumerator 协程和 uGUI 事件。
- 03基于 PlayerLoop 的 Delay、DelayFrame、Yield、WaitUntil 替代常见协程写法。
- 04提供 CancellationToken 取消、超时工具,以及用于排查泄漏的 TaskTracker 窗口。
- 05支持异步 LINQ、Channel 和 AsyncReactiveProperty。
适用场景
- 将 Unity 游戏中的协程逐步替换为 async/await 写法。
- 在 Unity 中加载场景、资源或网络请求并等待其完成。
- 在 WebGL 等不支持线程的平台上运行异步逻辑。
- 使用可 await 的按钮点击或碰撞事件构建事件驱动的游戏逻辑。
快速上手
- 1
通过带 git 引用的 UPM 包安装(参见 UPM Package 章节)
- 2
或从 releases 页面下载资源包
- 3
在脚本中添加命名空间以使用扩展方法
using Cysharp.Threading.Tasks;
使用前须知
- 需要 Unity 2018.3 或更新版本(官方最低支持版本为 2018.4.13f1)。
- UniTask 不能被多次 await;若存为字段需使用 UniTask.Lazy 或 .Preserve()。
标签
常见问题
- UniTask 是什么?
- 面向 Unity 的零分配 async/await 集成库,让 AsyncOperation、协程和事件可直接 await,基于 PlayerLoop 运行。 UniTask 是一个面向 Unity 的 C# 库,提供基于结构体的 UniTask<T> 类型和自定义的 async 方法构建器,目标是减少 async/await 代码中的堆内存分配。它可以直接 await Unity 的 AsyncOperation、协程(IEnumerator)以及 MonoBehaviour 消息事件,并提供基于 PlayerLoop 的 Delay、DelayFrame、Yield、WaitUntil 等方法,替代常见的协程写法。
- UniTask 可以免费使用吗?用的什么许可证?
- UniTask 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- UniTask 还在维护吗?
- 活跃维护中。UniTask 最近一次提交是在 2026年10月6日。
- UniTask 适合用来做什么?
- 将 Unity 游戏中的协程逐步替换为 async/await 写法。 在 Unity 中加载场景、资源或网络请求并等待其完成。 在 WebGL 等不支持线程的平台上运行异步逻辑。 使用可 await 的按钮点击或碰撞事件构建事件驱动的游戏逻辑。
- UniTask 怎么安装和运行?
- 通过带 git 引用的 UPM 包安装(参见 UPM Package 章节) 或从 releases 页面下载资源包 在脚本中添加命名空间以使用扩展方法: using Cysharp.Threading.Tasks;
- 在哪里获取 UniTask?
- 源代码和安装说明在 GitHub 上:https://github.com/Cysharp/UniTask
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
一个 MCP 插件,让 Cursor、Claude Code、Codex 等 AI 助手直接操作和查询 Unity 编辑器。
让 Claude、Cursor、Copilot 等 AI 代理通过 MCP 操作 Unity 编辑器,并可在游戏运行时调用 LLM 的插件。
为 Unity 2D 顶视角游戏提供导航网格生成与寻路功能,支持 Tilemap、Sprite 和 Collider2D。
面向 Unity 的零内存分配补间动画库,一行代码即可实现属性动画、延迟和序列动画。
Yarn Spinner 的官方 Unity 集成,用于在游戏中运行剧本式对话。