106 lines
4.4 KiB
Markdown
106 lines
4.4 KiB
Markdown
# 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-проекта:
|
||
|
||
1. Открой `Window > Package Manager`.
|
||
2. Нажми `+`.
|
||
3. Выбери `Add package from git URL...`.
|
||
4. Вставь:
|
||
|
||
```text
|
||
https://github.com/Cysharp/UniTask.git?path=src/UniTask/Assets/Plugins/UniTask#2.5.10
|
||
```
|
||
|
||
5. Нажми `Add`.
|
||
|
||
Альтернатива:
|
||
|
||
- импорт `unitypackage` из `Releases`
|
||
|
||
## Почему не через NuGet for Unity
|
||
|
||
`NuGet for Unity` здесь стоит использовать только если нужен именно `.NET`-вариант для общего кода вне Unity-клиента.
|
||
|
||
Для игрового Unity-проекта это плохой основной канал, потому что:
|
||
|
||
- официальный Unity-сценарий у автора проходит через `UPM`
|
||
- NuGet-вариант описан как `.NET Core` subset
|
||
- Unity-специфичные возможности безопаснее получать из официального Unity-пакета
|
||
|
||
## Как настроить после установки
|
||
|
||
После импорта дополнительной сложной инициализации обычно не требуется.
|
||
|
||
Базовые шаги:
|
||
|
||
1. Дождись завершения импорта.
|
||
2. Убедись, что проект компилируется.
|
||
3. Проверь, что namespace доступен:
|
||
|
||
```csharp
|
||
using Cysharp.Threading.Tasks;
|
||
```
|
||
|
||
## Что важно для этого проекта
|
||
|
||
Официальный README отдельно указывает:
|
||
|
||
- у `UniTask` есть поддержка `Addressables`
|
||
- у `UniTask` есть поддержка `DOTween`
|
||
|
||
Поддержка `Addressables` включается автоматически после установки соответствующего пакета, а для `DOTween` нужна define-константа:
|
||
|
||
```text
|
||
UNITASK_DOTWEEN_SUPPORT
|
||
```
|
||
|
||
Ее имеет смысл добавлять только после того, как `DOTween` уже установлен и реально используется.
|
||
|
||
## Минимальная практическая настройка для проекта
|
||
|
||
Для первого этапа достаточно:
|
||
|
||
- установить `UniTask` через `UPM`
|
||
- убедиться, что namespace доступен
|
||
- не переводить весь проект на `async/await` без явной необходимости
|
||
|
||
## Как проверить, что всё настроено
|
||
|
||
- пакет установлен без ошибок
|
||
- `using Cysharp.Threading.Tasks;` распознается
|
||
- проект компилируется после установки
|
||
|
||
## Официальные источники
|
||
|
||
- https://github.com/Cysharp/UniTask
|
||
- https://github.com/Cysharp/UniTask/releases
|
||
- https://www.nuget.org/packages/UniTask
|