106 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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