您的位置:首页 > 移动开发 > Unity3D

Unity实战笔记_5.简单的UI框架RescorceManager

2016-12-25 11:49 495 查看
因为要实现动态的场景加载,所以要使用到Rescorce或者AssetBundle。

这里先使用Rescorce加载。由于直接使用Rescorce中的接口并不方便。所以将其封装到一个RescorceManager类中。

首先应将这个类设置为单例,外部通过获取到ResManager的单例来加载或卸载资源。

首先实现单例:

#region
private static ResManager instance;
/// <summary>
/// 获取单例
/// </summary>
private static ResManager Instance
{
get
{
if(instance==null)
{
instance = new GameObject("_ResManager").AddComponent<ResManager>();
}
return instance;
}
}
#endregion


封装Load接口

public T Load<T>(string path, bool isCache) where T : UnityEngine.Object
{
T assetObj = Resources.Load<T>(path);
if(assetObj==null)
{
Debug.LogError("加载的资源不存在");
}
return assetObj;
}


参数isCache用于标记是否将该资源加入缓存中(一些场景可能会频繁打开,所以将其加入缓存中,防止重复创建耗费资源)

所以创建一个容器将加入缓存的资源保存起来

添加后函数如下

public T Load<T>(string path, bool isCache) where T : UnityEngine.Object
{
//判断当前加载的文件是否在缓存表中,如果在,直接返回表中的值
if(cacheTable.Contains(path))
{
return cacheTable[path]as T;//通过key来找到表中的数据
}
T assetObj = Resources.Load<T>(path);
if(assetObj==null)
{
Debug.LogError("加载的资源不存在");
}
if(isCache)
{
cacheTable.Add(path, assetObj);
Debug.Log("将对象加入缓存中,path=" + path);
}
return assetObj;
}


添加函数CreateGameObject用来创建加载的游戏物体。

/// <summary>
/// 从加载的资源中创建出游戏物体
/// </summary>
/// <param name="path">资源路径</param>
/// <param name="isCache">是否加入缓存</param>
/// <returns>GameObject游戏物体</returns>
public GameObject CreateGameObject(string path, bool isCache)
{
GameObject assetObj = Load<GameObject>(path, isCache);
GameObject gameObject = Instantiate(assetObj);
if(gameObject==null)
{
Debug.LogError("加载资源出错,path=" + path);
}
return gameObject;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity ui 框架