Unity中加载Texture2D不断消耗内存的问题
发布日期:2021-06-30 19:35:36
浏览次数:3
分类:技术文章
本文共 1540 字,大约阅读时间需要 5 分钟。
文章目录
一、加载Texture2D显示图片
游戏项目中,我们经常需要通过网络加载图片,比如用户头像、背景图,也可能是加载本地的某个图片,比如截屏图,一般我们会用一个Texture2D
来显示这个图片。
二、案例
比如我这里,从StreamingAssets
中加载一张背景图
using System.Collections;using UnityEngine;using UnityEngine.Networking;using UnityEngine.UI;public class Main : MonoBehaviour{ public Button loadTexturebtn; public RawImage rawImage; void Awake() { loadTexturebtn.onClick.AddListener(() => { StartCoroutine(LoadTexture()); }); } IEnumerator LoadTexture() { var url = Application.streamingAssetsPath + "/bg.png";#if UNITY_EDITOR url = "file:///" + url;#endif UnityWebRequest uwr = UnityWebRequest.Get(url); yield return uwr.SendWebRequest(); if (uwr.isNetworkError || uwr.isHttpError) { Debug.Log(uwr.error); yield break; } while (!uwr.isDone) { yield return null; } var data = uwr.downloadHandler.data; //这里,就会在内存中申请空间了 Texture2D texture = new Texture2D(rawImage.mainTexture.width, rawImage.mainTexture.height); texture.LoadImage(data); rawImage.texture = texture; }}
三、内存分析
我们new
了一个Texture2D
,然后赋值给RawImage
显示,如果我们不断得点击Load Texture
按钮,就会不断地执行加载,不断地new Texture2D
,导致不断地申请内存空间,我们可以通过Memory Profile
看看内存情况,我点击了30次Load Texture
按钮,内存中申请了30个Texture2D
,并且没有释放掉,即使我把RawImage
销毁掉,内存中依然会存放那30个Texture2D
。
四、如何释放内存
1、错误示范
销毁RawImage
,然后隔一帧,调用Resources.UnloadUnusedAssets();
经过测试,这样是不能释放内存的,内存中依然存着Texture2D
2、正确示范
直接销毁Texture2D
。
可以看到,内存中释放了Texture2D
转载地址:https://linxinfa.blog.csdn.net/article/details/108347571 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年05月03日 12时16分06秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
OpenCV杂记 - Mat in C++
2019-04-30
lnmp部署
2019-04-30
nginx平滑升级
2019-04-30
location区段
2019-04-30
nginx访问控制、基于用户认证、https配置
2019-04-30
用zabbix监控nginx
2019-04-30
rewrite和if语句
2019-04-30
nginx实现负载均衡和动静分离
2019-04-30
SaltStack
2019-04-30
Packer 如何将 JSON 的配置升级为 HCL2
2019-04-30
Ubuntu 安装 NTP 服务
2019-04-30
NeoFetch - Linux 使用命令行查看系统信息
2019-04-30
Jenkins 控制台输出中的奇怪字符
2019-04-30
Linux添加系统调用
2019-04-30
ubuntu 18 CTF 环境搭建
2019-04-30
linux内存的寻址方式
2019-04-30
[off by null + tcache dup]lctf_easy_heap
2019-04-30
[pie+libc]national2021_pwny
2019-04-30