Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
private async Task<UnityWebRequest> WebRequest(CancellationTokenSource cancelationToken, UnityWebRequest request, Action<float> progress)
{
while (!Caching.ready)
{
if (cancelationToken.IsCancellationRequested)
{
return null;
}
await new WaitForUpdate();
}
#pragma warning disable CS4014
request.SendWebRequest();
#pragma warning restore CS4014
while (!request.isDone)
{
if (cancelationToken.IsCancellationRequested)
{
request.Abort();
request.Dispose();
return null;
}
else
{
progress?.Invoke(request.downloadProgress);
await new WaitForUpdate();
}
}
progress?.Invoke(1f);
return request;
}
В AssetBundleWrapper.LoadAsset условие должно быть инвертировано, судя по логике метода:
if (string.IsNullOrEmpty(assetPath))
{
return AssetDatabase.LoadAssetAtPath<T>(assetPath);
} else
{
return default;
}DownloadHandlerAudioClip.GetContent(request) и упаковав его в AssetBundle:
AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(www);
var audioClip = bundle.LoadAssetAsync<AudioClip>(bundle.GetAllAssetNames()[0]);
public void LoadAssetAsync<T>(string name, Action<T> result) where T : UnityEngine.Object
{
var request = _assetBundle.LoadAssetAsync<T>(name);
TaskManager.Task.Create(request)
.Subscribe(() =>
{
result(request.asset as T);
Unload(false);
})
.Start();
}
Работа с внешними ресурсами в Unity3D