UniTask
Зачем это нужно
UniTask нужен для эффективной async/await-работы в Unity без тяжелого стандартного Task-подхода.
Сравнение официального источника и NuGet
На момент проверки:
- в официальном репозитории
Cysharp/UniTaskактуальный release:2.5.10от2024-10-03 - на
nuget.orgактуальный пакетUniTask: тоже2.5.10
Но для Unity это не означает, что пакет нужно ставить через NuGet for Unity.
Официальный README разделяет сценарии так:
- для Unity:
UPMчерезgit URLилиunitypackage - для
.NET Core:NuGet
Дополнительно автор прямо указывает, что .NET Core-версия UniTask является subset по отношению к Unity-версии и не включает Unity-зависимый функционал, завязанный на PlayerLoop.
Вывод для этого проекта:
- версии на GitHub и NuGet совпадают
- несмотря на это, для Unity-клиента нужно использовать официальный
UPM-канал NuGet for UnityдляUniTaskв этом проекте не является основным способом установки
Как установить
Предпочтительный способ для Unity-проекта:
- Открой
Window > Package Manager. - Нажми
+. - Выбери
Add package from git URL.... - Вставь:
https://github.com/Cysharp/UniTask.git?path=src/UniTask/Assets/Plugins/UniTask#2.5.10
- Нажми
Add.
Альтернатива:
- импорт
unitypackageизReleases
Почему не через NuGet for Unity
NuGet for Unity здесь стоит использовать только если нужен именно .NET-вариант для общего кода вне Unity-клиента.
Для игрового Unity-проекта это плохой основной канал, потому что:
- официальный Unity-сценарий у автора проходит через
UPM - NuGet-вариант описан как
.NET Coresubset - Unity-специфичные возможности безопаснее получать из официального Unity-пакета
Как настроить после установки
После импорта дополнительной сложной инициализации обычно не требуется.
Базовые шаги:
- Дождись завершения импорта.
- Убедись, что проект компилируется.
- Проверь, что namespace доступен:
using Cysharp.Threading.Tasks;
Что важно для этого проекта
Официальный README отдельно указывает:
- у
UniTaskесть поддержкаAddressables - у
UniTaskесть поддержкаDOTween
Поддержка Addressables включается автоматически после установки соответствующего пакета, а для DOTween нужна define-константа:
UNITASK_DOTWEEN_SUPPORT
Ее имеет смысл добавлять только после того, как DOTween уже установлен и реально используется.
Минимальная практическая настройка для проекта
Для первого этапа достаточно:
- установить
UniTaskчерезUPM - убедиться, что namespace доступен
- не переводить весь проект на
async/awaitбез явной необходимости
Как проверить, что всё настроено
- пакет установлен без ошибок
using Cysharp.Threading.Tasks;распознается- проект компилируется после установки