Beispiel #1
0
        /// <summary>
        /// 从对象池中获取对象
        /// </summary>
        /// <param name="poolId"></param>
        /// <param name="prefab"></param>
        /// <param name="onComplete"></param>
        public Transform Spawn(byte poolId, Transform prefab, System.Action <Transform> onComplete)
        {
            GameObjectPoolEntity entity = null;

            m_SpawnPoolDic.TryGetValue(poolId, out entity);
            if (entity == null)
            {
                Debug.LogError(string.Format("游戏对象池不存在,poolId为:{0}", poolId));
                return(null);
            }

            PathologicalGames.PrefabPool prefabPool = entity.Pool.GetPrefabPool(prefab);

            if (prefabPool == null)
            {
                prefabPool = new PathologicalGames.PrefabPool(prefab);
                prefabPool.cullDespawned  = entity.CullDespawned;
                prefabPool.cullAbove      = entity.CullAbove;
                prefabPool.cullDelay      = entity.CullDelay;
                prefabPool.cullMaxPerPass = entity.CullMaxPerpass;

                entity.Pool.CreatePrefabPool(prefabPool);
            }
            Transform res = entity.Pool.Spawn(prefab);

            if (onComplete != null)
            {
                onComplete(res);
            }
            return(res);
        }
Beispiel #2
0
        /// <summary>
        /// 从对象池中获取对象
        /// </summary>
        /// <param name="poolId"></param>
        /// <param name="prefab"></param>
        /// <param name="onComplete"></param>
        public void Spawn(byte poolId, Transform prefab, System.Action <Transform> onComplete)
        {
            GameObjectPoolEntity entity = m_SpawnPoolDic[poolId];

            PathologicalGames.PrefabPool prefabPool = entity.Pool.GetPrefabPool(prefab);

            if (prefabPool == null)
            {
                prefabPool = new PathologicalGames.PrefabPool(prefab);
                prefabPool.cullDespawned  = entity.CullDespawned;
                prefabPool.cullAbove      = entity.CullAbove;
                prefabPool.cullDelay      = entity.CullDelay;
                prefabPool.cullMaxPerPass = entity.CullMaxPerPass;

                entity.Pool.CreatePrefabPool(prefabPool);
            }

            if (onComplete != null)
            {
                onComplete(entity.Pool.Spawn(prefab));
            }
        }