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










