Загрузить изображение и видео с URL
У меня проблемы с загрузкой изображения с URL. Я получаю этот URL на ответ от POST на сервер.
Итак, у меня есть функция POST ниже:
public void getDataStruct()
{
string url = " myurl";
WWWForm form = new WWWForm();
form.AddField("id", "2");
WWW www = new WWW(url, form);
StartCoroutine(WaitForRequest(www));
}
IEnumerator WaitForRequest(WWW www)
{
yield return www;
// check for errors
if (www.error == null)
{
Data[] jsonData = JsonHelper.FromJson<Data>(www.text);
for (int i = 0; i < jsonData.Length; i++)
{
switch(jsonData[i].tipo)
{
//Image
case 0:
GameObject plno = GameObject.Find ("Plane").gameObject;
LoadImageFromUrl planeScript = (LoadImageFromUrl)plno.GetComponent (typeof(LoadImageFromUrl));
planeScript.url = jsonData[i].url;
break;
//video
case 1:
GameObject video = GameObject.Find ("Video1").gameObject;
VideoPlaybackBehaviour videocript = (VideoPlaybackBehaviour)video.GetComponent(typeof(VideoPlaybackBehaviour));
videocript.youtubeVideoIdOrUrl=jsonData[i].url;
break;
case 2:
break;
}
}
}
else {
MobileNativeMessage msg = new MobileNativeMessage("Error", "Error");
}
}
Я не знаю почему, но когда я делаю это, изображение / видео не показываются.. потому что этот код рендеринга находится внутри функции запроса? Я проверил без необходимости POST, и я просто жестко закодировал URL-адреса и работает.
LoadFunction:
public class LoadImageFromUrl : MonoBehaviour {
public string url;
// Use this for initialization
IEnumerator Start () {
Texture2D tex;
tex = new Texture2D(4, 4, TextureFormat.DXT1, false);
WWW www = new WWW(url);
yield return www;
www.LoadImageIntoTexture(tex);
GetComponent<Renderer>().material.mainTexture = tex;
}
}
1 ответ
Решение
GameObject plno = GameObject.Find ("Plane").gameObject;
LoadImageFromUrl planeScript = (LoadImageFromUrl)plno.GetComponent (typeof(LoadImageFromUrl));
planeScript.url = jsonData[i].url;
Вы назначаете URL, теперь вы должны вызвать сопрограмму загрузки из компонента LoadImageFromUrl. Измените свой класс на что-то вроде этого:
public class LoadImageFromUrl : MonoBehaviour {
public string url;
public void Download()
{
StartCoroutine(DownloadRoutine());
}
// Use this for initialization
IEnumerator DownloadRoutine () {
Texture2D tex;
tex = new Texture2D(4, 4, TextureFormat.DXT1, false);
WWW www = new WWW(url);
yield return www;
www.LoadImageIntoTexture(tex);
GetComponent<Renderer>().material.mainTexture = tex;
}
}
И добавить
planeScript.Download()
после
planeScript.url = jsonData[i].url;
То же самое с видео