当前位置: 首页 > article >正文

unity3d————Resources卸载资源

目录

知识点一: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; // 清空引用,避免悬挂指针
            }
        }
    }
}

 


http://www.kler.cn/a/396951.html

相关文章:

  • 如何构建安全可靠的 HarmonyOS 应用
  • 【软件工程】一篇入门UML建模图(类图)
  • C++11标准模板(STL)- 常用数学函数 - 宏常量 - 求值得到float类型的安静NaN(NAN)
  • 硬件---4电感---基本概念与特性
  • Aria2-CVE-2023-39141漏洞分析
  • 使用 Caffeine 缓存并在业务方法上通过注解实现每3到5秒更新缓存
  • Python学习笔记(2)正则表达式
  • 《Java核心技术 卷I》用户界面AWT事件继承层次
  • 【网络】什么是交换机?switch
  • IDC机房服务器托管的费用组成
  • 【MyBatis操作数据库】XML配置
  • 自然语言处理(NLP)的开源生态系统:Hugging Face 原理和使用
  • [241115] Debian 12.8 发布 | Mistral AI 推出批量 API,成本降低 50%
  • “嵌入”在大语言模型中是解决把句子转换成向量表示的技术
  • Servlet⽣生命周期超级细(笔记)
  • 区间和 离散化 模板题
  • CentOS 升级 gcc 版本
  • 项目风险管理的3大要素
  • 如何基于Tesseract实现图片的文本识别
  • Redis 持久化机制 RDB 和 AOF 区别