游戏性能优化--ResourcesManager对象缓冲

/*            资源加载管理器 对象缓冲技术
 *   功能:可以做一个资源容器,方便动态加载资源,在unity中Resources。load<>是非常
 *         消耗性能的。通过这个脚本插件可以很好的优化脚本性能。
 * 
 */
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ResourcesManager : MonoBehaviour {

    private static ResourcesManager _instance;   //本类私有单例实例
    private Hashtable ht = null;                 //哈希表用来做容器,用法也是键值对

    /// <summary>
    /// 构造函数:创建容器
    /// </summary>
    private ResourcesManager()
    {
        ht = new Hashtable();
    }
    /// <summary>
    /// 单例方法:得到本类实例
    /// </summary>
    /// <returns></returns>
    public static ResourcesManager GetInstance()
    {
        if(_instance =null)
        {
            //创建带有ResourcesManager的对象
            _instance = new GameObject("ResourcesManager").AddComponent<ResourcesManager>();
        }
        return _instance;
    }
    /// <summary>
    /// 泛型方法:加载对象
    /// </summary>
    /// <typeparam name="T">泛型类型</typeparam>
    /// <param name="path">加载的对象路径</param>
    /// <param name="isUse">是否用容器</param>
    /// <returns></returns>
    public  T LoadResources<T>(string path,bool isUse) where T:UnityEngine.Object
    {
        //如果容器中已经存在,直接加载
        if (ht.Contains(path))
        {
            return ht[path] as T;
        }
        T TResources = Resources.Load<T>(path);//加载资源
        if(TResources==null)
        {
            Debug.LogWarning(GetType() + "/GetInstance()/TResources 资源不存在" + path);

        }
        //如果使用容器,将路径和对应的对象添加到容器
        else if (isUse)
        {
            ht.Add(path, TResources);
        }
        return TResources;
    } 

}

猜你喜欢

转载自blog.csdn.net/qq_35711014/article/details/80713874