Unity中的物体可以分为 资源和实例对象 两种,一种是需要实例化出来的,一种是不需要实例化出来的,例如 动画控制器(RuntimeAnimatorController),精灵(Sprite),音频资源(AudioClip),图片贴图(Texture2D)等...他们都是被UnityEngine 下的Object类包含的。
下面这个方法可以用来 加载以上不需要实例化的资源,
public class GenResourceFactory<T>:IBaseResourceFactory<T> where T:UnityEngine.Object
{
protected Dictionary<string, T> factoryDic = new Dictionary<string, T>();
protected string LoadPath;
public T GetSingleResources(string resPath)
{
T res = default(T);
string path = LoadPath + resPath;
if (factoryDic.ContainsKey(resPath))
{
res = factoryDic[resPath];
}
else
{
res = Resources.Load<T>(path) ;
factoryDic.Add(resPath, res);
}
if (res == null)
{
Debug.Log("无法加载" + path);
}
return res;
}
}
下面接口 适用于 上述工厂..
/// <summary>
/// 其他种类资源工厂 每种获取的工厂都不同,所以我们用泛型接口
/// </summary>
/// <typeparam name="T"></typeparam>
public interface IBaseResourceFactory<T>
{
T GetSingleResources(string resPath);
}
用工厂模式可以 提高 开发效率,减低耦合度,提高扩展性,方便后续修改http://www.runoob.com/design-pattern/factory-pattern.html...