예제 #1
0
 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());
     }
 }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
 public virtual void Recycle(IRecycleObject recycleObject)
 {
     MonoBehaviour.print("recycle: " + recycleObject);
 }
예제 #5
0
 public static void Push(IRecycleObject recycleObj)
 {
     Push(recycleObj.RecycleID, recycleObj.gameObject);
 }