Поля в инспекторе не заполняются Asset Bundle'ами
Всем привет. Изучаю asset bundle'ы. Зарегал бесплатный демохостинг, загрузил туда asset bundle. Все загружается/скачивается нормально. Все дебаглоги проходят в консоль, но картинки и музыки нет, поля AudioClip и Sprite остаются пустыми. Не пойму в чем может быть причина
using System.Collections;
using UnityEngine;
public class LoadScript : MonoBehaviour
{
private string _bundleURL = "anyLink"; //убрал ссылку чтобы не палить пароль
private int _version = 0;
[SerializeField] private AudioSource _audioSource;
[SerializeField] private SpriteRenderer _renderer;
public void OnClickDownload()
{
StartCoroutine(DownloadAndCache());
}
IEnumerator DownloadAndCache()
{
while (!Caching.ready)
{
yield return null;
}
var www = WWW.LoadFromCacheOrDownload(_bundleURL, _version);
yield return www;
if (!string.IsNullOrEmpty(www.error))
{
Debug.Log(www.error);
yield break;
}
Debug.Log("Бандл загружен");
var assetBundle = www.assetBundle;
string musicName = "duraki";
string spriteName = "heart";
var musicRequest = assetBundle.LoadAssetAsync(musicName, typeof(AudioClip));
yield return musicRequest;
Debug.Log("Музыкальный файл распакован");
var spriteRequest = assetBundle.LoadAssetAsync(spriteName, typeof(Sprite));
yield return spriteRequest;
Debug.Log("Изображение распаковано");
_audioSource.clip = musicRequest.asset as AudioClip;
_audioSource.Play();
Debug.Log("Музыка играет");
_renderer.sprite = spriteRequest.asset as Sprite;
Debug.Log("Картинка есть");
}
}
Ответы (1 шт):
Автор решения: Rotmayer
→ Ссылка
Решил проблему, используя UnityWebRequest вместо WWW. Не знаю, что я не так делал, методом тыка и чтения документации получилось.
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
public class LoadScript : MonoBehaviour
{
private string _bundleURL = "PasteYourLinkHere";
public void OnClickDownload()
{
StartCoroutine(DownloadAndCache());
}
[SerializeField] private SpriteRenderer _spriteRenderer;
[SerializeField] private AudioSource _audioSource;
IEnumerator DownloadAndCache()
{
var www = UnityWebRequestAssetBundle.GetAssetBundle(_bundleURL);
yield return www.SendWebRequest();
Debug.Log("Бандл загружен");
AssetBundle assetBundle = DownloadHandlerAssetBundle.GetContent(www);
var spriteRequest = assetBundle.LoadAssetAsync<Sprite>("assets/synergy/recources/sprites/heart.png");
yield return spriteRequest;
var musicRequest = assetBundle.LoadAssetAsync<AudioClip>("assets/synergy/recources/music/duraki.mp3");
yield return spriteRequest;
_spriteRenderer.sprite = spriteRequest.asset as Sprite;
_audioSource.clip = musicRequest.asset as AudioClip;
_audioSource.Play();
}
}


