目前untiyAPI 提供网络请求图片方式有两种
WWW
2.UnityWebRequest
第一种 www 下载图片避免内存泄漏
首先 请求部分
IEnumerator Request(Action action)
{
WWW www = new WWW("url");
yield return www;//等待Web服务器的反应
if (www.error != null)
{
Debug.Log( www.error);
yield return null;
}
action( www.texture);
}
第二部分 给RawImage 赋值 这部分 尤为重要,处理不好会内存泄漏
RawImage rawImage;
第一种:
void Create(Texture2D t)
{
//先销毁Texture
Destory( rawImage);
rawImage.texture=t;
}
这种方式是先将rawImage 引用的Texture销毁,再引用新的Texture2D,内存不会泄露
UnityWebRequest 下载方式:要注意会有两处引起内存泄漏的地方
这种方式 如果使用UnityWebRequest GetTexture 会引起内存泄漏,这是引擎本身的bug
可以去源码 ,unity 在销毁UnityWebRequest 没有销毁DownloadHandlerTexture引用的
m