对象池优化的是CPU
优化了CPU但是稍微多了些内存的占用
一个大的对象池相当于一个List,但是他还可以有很对子对象池,找的时候比较难找,所以父对象池比作一个字典,子对象池为一个List
//创建一个对象池
//预设体缓存,加载过一个预设体,不用每次都去Resources中加载,可以加载到缓存中
public class ObjectPool
{
public static readonly ObjectPool instance = new ObjectPool();
//私有构造
private ObjectPool()
{
//给对象池分配内存
pool = new Dictionary<string, List<GameObject>>();
//给预设体缓存分配内存
prefabCache = new Dictionary<string, GameObject>();
}
//对象池
private Dictionary<string, List<GameObject>> pool;
//预设体缓存
private Dictionary<string, GameObject> prefabCache;
//封装一个方法,去加载Resources的资源
public static readonly AssetManger mgr = new AssetManger();
//私有构造
private AssetManger() {
}
//加载Resources文件夹中的资源
public T LoadPerfab<T>(string assetName) where T:Object
{
//AssestConst存放的是字符串,这个 预设体根目录的字符串
return Resources.Load<T>(AssetConst .PREFABROOTPATH + assetName);
}
//加载到资源在对象池中生成