/* 资源加载管理器 对象缓冲技术
* 功能:可以做一个资源容器,方便动态加载资源,在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;
}
}
游戏性能优化--ResourcesManager对象缓冲
猜你喜欢
转载自blog.csdn.net/qq_35711014/article/details/80713874
今日推荐
周排行