Можно ли использовать «async ValueTask» в Unity?

Unity Addressables предлагает создавать предметы асинхронно. Написал следующий код:

public async void SpawnItem(ItemInfo itemInfo, Transform parentPos)
    {
        GameObject item = await SpawnAsset(itemInfo.itemName, parentPos);
        //действия с item
    }

    public async ValueTask<GameObject> SpawnAsset(string itemName, Transform spawnPoint)
    {
        for (int i = 0; i < addressableAssets.Count; i++)
        {
            string storeName = LocationShortName(addressableAssets[i].InternalId);

            if (itemName != storeName) continue;

            GameObject spawnedObject = await Addressables.InstantiateAsync
                (addressableAssets[i], spawnPoint.position, spawnPoint.rotation, spawnPoint).Task;
            
            spawnedObjects.Add(spawnedObject);
            return spawnedObject;
        }

        return null;
    }


По умолчанию тип ValueTask недоступен. Чтобы использовать его, через NuGet я устанавливаю пакет System.Threading.Tasks.Extensions и ValueTask становится доступен.

Однако после сохранения кода и перехода в редактор Unity, в консоли появляются ошибки.
60d9be0665040720511344.png

После этого пакет ValueTask снова становится недоступен. Удалив его через NuGet и установив заново, картина повторяется: в vs все работает, но стоит открыть скрипт в unity, пакет становится недоступным. В чем может быть причина?

60d9bf4195b16285427716.png
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
В юнити нельзя, тк ValueTask - это слишком новая фича.
Но скорее всего он вам не нужен
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Artemko_one
Такое поведение с доступностью/недоступностью в коде идёт от того, что Unity сама генерирует файлы .sln и .csproj для проекта. Ты добавляешь ссылку на пакет через Nuget, Unity это не понимает и убирает эту ссылку, когда пересохраняет сборку при открытии движка. Unity из коробки не дружит с Nuget
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы