/// <summary> /// 添加对象 /// </summary> /// <param name="poolType"></param> /// <param name="poolObjectState"></param> /// <param name="Name"></param> /// <param name="sources"></param> public static void AddPool(PoolType poolType, PoolObjectStateType poolObjectState, string Name, ISources sources) { switch (poolType) { case PoolType.GenericProp: genericPropPool.AddPool(poolObjectState, Name, sources); break; case PoolType.Enemy: enemyPool.AddPool(poolObjectState, Name, sources); break; case PoolType.Player: playerPool.AddPool(poolObjectState, Name, sources); break; default: break; } }
public virtual void AddPool(PoolObjectStateType poolObjectState, string targetName, ISources target) { PoolOnject poolOnject = default(PoolOnject); switch (poolObjectState) { case PoolObjectStateType.Activity: if (!target.Target.activeInHierarchy) { target.Target.SetActive(true); } poolOnject = new PoolOnject(); poolOnject.targetName = targetName; poolOnject.sources = target; activityPoolObjects.Add(poolOnject); break; case PoolObjectStateType.Inactivity: if (target.Target.activeInHierarchy) { target.Target.SetActive(false); } poolOnject = activityPoolObjects.Find(p => p.targetName == targetName && p.sources == target); if (poolOnject != null) { activityPoolObjects.Remove(poolOnject); inactivityPoolObjects.Add(poolOnject); } else { poolOnject = new PoolOnject(); poolOnject.targetName = targetName; poolOnject.sources = target; inactivityPoolObjects.Add(poolOnject); } break; default: break; } }
/// <summary> /// 获取对象 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="poolType"></param> /// <param name="poolObjectState"></param> /// <param name="Name"></param> /// <returns></returns> public static T GetPool <T>(PoolType poolType, PoolObjectStateType poolObjectState, string Name) { T t = default(T); switch (poolType) { case PoolType.GenericProp: t = genericPropPool.GetPool <T>(poolObjectState, Name); break; case PoolType.Enemy: t = enemyPool.GetPool <T>(poolObjectState, Name); break; case PoolType.Player: t = playerPool.GetPool <T>(poolObjectState, Name); break; default: break; } return(t); }
public virtual T GetPool <T>(PoolObjectStateType poolObjectState, string targetName) { Debug.Log(activityPoolObjects.Count + "====" + inactivityPoolObjects.Count); T t = default(T); PoolOnject poolOnject = default(PoolOnject); switch (poolObjectState) { case PoolObjectStateType.Activity: poolOnject = activityPoolObjects.Find(p => p.targetName == targetName); activityPoolObjects.Remove(poolOnject); break; case PoolObjectStateType.Inactivity: poolOnject = inactivityPoolObjects.Find(p => p.targetName == targetName); inactivityPoolObjects.Remove(poolOnject); break; default: break; } if (poolOnject != null) { if (!poolOnject.sources.Equals(null)) { t = poolOnject.sources.Target.GetComponent <T>(); } else { activityPoolObjects.Remove(poolOnject); inactivityPoolObjects.Remove(poolOnject); } } return(t); }