unity3d————Resources卸载资源
目录
知识点一:Resources重复加载资源是否会浪费内存?
- 资源缓存机制:
- 使用
Resources
加载资源时,资源首次加载后会存储在内存中作为缓存。 - 后续加载相同资源时,将直接从缓存中取出,避免重复加载,因此不会增加内存占用。
- 但每次加载都会进行查找操作,存在性能消耗。
- 使用
知识点二:如何手动释放掉缓存中的资源?
- 卸载指定资源:
- 使用
Resources.UnloadAsset(Object assetToUnload)
方法卸载特定资源。 - 注意:此方法不能用于
GameObject
对象,因为GameObject
通常用于实例化。 - 示例代码(错误用法):
// GameObject obj = Resources.Load<GameObject>("Cube");
// Resources.UnloadAsset(obj); // 不允许卸载GameObject
- 使用
- 卸载未使用的资源:
- 使用
Resources.UnloadUnusedAssets()
方法卸载所有未使用的资源。 - 配合垃圾回收
GC.Collect()
使用,通常在场景切换时执行。 - 示例代码:
Resources.UnloadUnusedAssets();
GC.Collect();
- 使用
实现代码
以下代码展示了如何在Unity中加载与卸载资源:
using UnityEngine;
public class ResourceManagement : MonoBehaviour
{
private Texture tex;
// Start is called before the first frame update
void Start()
{
// 初始化操作(如需要)
}
// Update is called once per frame
void Update()
{
// 按下键盘1键加载资源
if (Input.GetKeyDown(KeyCode.Alpha1))
{
print("加载资源");
tex = Resources.Load<Texture>("Tex/TestJPG");
}
// 按下键盘2键卸载资源
if (Input.GetKeyDown(KeyCode.Alpha2))
{
print("卸载资源");
if (tex != null)
{
Resources.UnloadAsset(tex);
tex = null; // 清空引用,避免悬挂指针
}
}
}
}
原文地址:https://blog.csdn.net/2401_82978699/article/details/143815655
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!