public virtual void AddPrototype(IRecycleObject template) { if (!prototypes.ContainsKey(template.GetType())) { List <IRecycleObject> group = new List <IRecycleObject>(); template.BindFactory(this); prototypes.Add(template.GetType(), group); } else { MonoBehaviour.print("already has the type:" + template.GetType()); } }
/// <summary> /// 回收对象 /// </summary> /// <param name="name"></param> /// <param name="obj"></param> public static void RecycleObject(string name, GameObject obj) { if (!pools.ContainsKey(name)) { return; } IRecycleObject recycleObject = obj.GetComponent <IRecycleObject>(); if (recycleObject == null) { return; } recycleObject.RecycleObject(); pools[name].Add(recycleObject); }
/// <summary> /// /// </summary> /// <param name="name">名字</param> /// <param name="prefab">预制体</param> /// <param name="initPrefab">预制体初始化</param> public static void AddNewObjectPool(string name, GameObject prefab, InitPrefab initPrefab) { if (prefabs.ContainsKey(name)) { return; } IRecycleObject recycleObject = prefab.GetComponent <IRecycleObject>(); if (recycleObject == null) { return; } AddPrefab(name, prefab, initPrefab); List <IRecycleObject> pool = new List <IRecycleObject>(); pool.Add(recycleObject); pools.Add(name, pool); }
public virtual void Recycle(IRecycleObject recycleObject) { MonoBehaviour.print("recycle: " + recycleObject); }
public static void Push(IRecycleObject recycleObj) { Push(recycleObj.RecycleID, recycleObj.gameObject); }