/// <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); }
/// <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)); } }