Пример #1
0
    /// <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;
        }
    }
Пример #2
0
        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;
            }
        }
Пример #3
0
    /// <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);
    }
Пример #4
0
        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);
        }