Unity使用UnityWebRequest从网络中获取图片并加载在2D/3D物体上
首先从网络中获取资源使用的是协程(从来没遇到在主线程中下载资源的情况)
如果图片附加到2D/3D物体上出现红色问号,要么是路径有问题,要么是代码逻辑有问题(协程内部的逻辑有没有问题,调用协程有没有问题(是用StartCoroutine来调用协程的,别傻乎乎的像调用普通的方法一样去调用协程,那样不起作用(我就犯过这个错)))
如果是从网页中随便找的一张图来给物体赋值的话,要检查这个图片的地址有没有问题(图片地址一般是.jpg结尾),如果不对,Please自行百度查看图片的真正地址是什么
最后就是代码了,只是一个简单的小栗子
StartCoroutine(LoadTextureFromInternet("http://avatar.csdnimg.cn/1/E/6/2_u013012420.jpg"));
IEnumerator LoadTextureFromInternet(string path)
{
UnityWebRequest request = new UnityWebRequest(path);
//给request的downloadhandle赋值,new出来的UnityWebRequest不附加downloadhandle
//数据,不赋值的话访问不到下载出来的数据
DownloadHandlerTexture texture = new DownloadHandlerTexture(true);
request.downloadHandler = texture;
yield return request.Send();
if (string.IsNullOrEmpty(request.error))
{
pic = texture.texture;
}
Image tempImage = GameObject.Find("Image").GetComponent<Image>();
Sprite sp = Sprite.Create((Texture2D)pic, new Rect(0, 0, pic.width, pic.height), Vector2.zero);
tempImage.sprite = sp;
GameObject go = GameObject.Find("Cube");
go.GetComponent<MeshRenderer>().material.mainTexture = pic;
}