游戏性能优化--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;
    } 

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值