Exemple #1
0
 public void SetObjectPoolManager(IObjectPoolManager objectPoolManager)
 {
     if (objectPoolManager == null)
     {
         throw;
     }
     m_ObjectPoolManager = objectPoolManager;
     m_InstancePool = m_ObjectPoolManager.CreateSingleSpawnObjectPool<UIFormInstanceObject>("UI Instance Pool");
 }
Exemple #2
0
        /// <summary>
        /// 设置对象池管理器。
        /// </summary>
        /// <param name="objectPoolManager">对象池管理器。</param>
        public void SetObjectPoolManager(IObjectPoolManager objectPoolManager)
        {
            if (objectPoolManager == null)
            {
                throw new GameFrameworkException("Object pool manager is invalid.");
            }

            m_ObjectPoolManager = objectPoolManager;
            m_InstancePool      = m_ObjectPoolManager.CreateSingleSpawnObjectPool <UIFormInstanceObject>("UI Instance Pool");
        }
Exemple #3
0
        public void CreateObjectPool(string poolName, int capacity, float lifeTime, UnityEngine.Transform poolParent)
        {
            IObjectPoolManager objectPoolManager = GameFrameEntry.GetModule <ObjectPoolManager>();

            if (objectPoolManager != null)
            {
                m_PoolName      = poolName;
                m_UnspawnParent = poolParent;
                m_InstancePool  = objectPoolManager.CreateSingleSpawnObjectPool <NormalObject>(poolName);
                m_InstancePool.AutoReleaseInterval = lifeTime;
                m_InstancePool.Capacity            = capacity;
                m_InstancePool.ExpireTime          = lifeTime;
                m_InstancePool.Priority            = 0;
            }
        }
            /// <summary>
            /// 初始化实体组的新实例。
            /// </summary>
            /// <param name="name">实体组名称。</param>
            /// <param name="instanceAutoReleaseInterval">实体实例对象池自动释放可释放对象的间隔秒数。</param>
            /// <param name="instanceCapacity">实体实例对象池容量。</param>
            /// <param name="instanceExpireTime">实体实例对象池对象过期秒数。</param>
            /// <param name="instancePriority">实体实例对象池的优先级。</param>
            /// <param name="entityGroupHelper">实体组辅助器。</param>
            /// <param name="objectPoolManager">对象池管理器。</param>
            public EntityGroup(string name, float instanceAutoReleaseInterval, int instanceCapacity, float instanceExpireTime, int instancePriority, IEntityGroupHelper entityGroupHelper, IObjectPoolManager objectPoolManager)
            {
                if (string.IsNullOrEmpty(name))
                {
                    throw new GameFrameworkException("Entity group name is invalid.");
                }

                if (entityGroupHelper == null)
                {
                    throw new GameFrameworkException("Entity group helper is invalid.");
                }

                m_Name = name;
                m_EntityGroupHelper = entityGroupHelper;
                m_InstancePool      = objectPoolManager.CreateSingleSpawnObjectPool <EntityInstanceObject>(Utility.Text.Format("Entity Instance Pool ({0})", name), instanceCapacity, instanceExpireTime, instancePriority);
                m_InstancePool.AutoReleaseInterval = instanceAutoReleaseInterval;
                m_Entities = new LinkedList <IEntity>();
            }
            /// <summary>
            /// 初始化实体组的新实例。
            /// </summary>
            /// <param name="name">实体组名称。</param>
            /// <param name="instanceAutoReleaseInterval">实体实例对象池自动释放可释放对象的间隔秒数。</param>
            /// <param name="instanceCapacity">实体实例对象池容量。</param>
            /// <param name="instanceExpireTime">实体实例对象池对象过期秒数。</param>
            /// <param name="instancePriority">实体实例对象池的优先级。</param>
            /// <param name="ItemGroupHelper">实体组辅助器。</param>
            /// <param name="objectPoolManager">对象池管理器。</param>
            public ItemGroup(string name, float instanceAutoReleaseInterval, int instanceCapacity, float instanceExpireTime, int instancePriority, IItemGroupHelper ItemGroupHelper, IObjectPoolManager objectPoolManager)
            {
                if (string.IsNullOrEmpty(name))
                {
                    throw new GameFrameworkException("Item group name is invalid.");
                }

                if (ItemGroupHelper == null)
                {
                    throw new GameFrameworkException("Item group helper is invalid.");
                }

                m_Name            = name;
                m_ItemGroupHelper = ItemGroupHelper;
                m_InstancePool    = objectPoolManager.CreateSingleSpawnObjectPool <ItemInstanceObject>(Utility.Text.Format("Item Instance Pool ({0})", name), instanceCapacity, instanceExpireTime, instancePriority);
                m_InstancePool.AutoReleaseInterval = instanceAutoReleaseInterval;
                m_Items      = new GameFrameworkLinkedList <IItem>();
                m_CachedNode = null;
            }
Exemple #6
0
 /// <summary>
 /// 创建允许单次获取的对象池。
 /// </summary>
 /// <typeparam name="T">对象类型。</typeparam>
 /// <returns>要创建的允许单次获取的对象池。</returns>
 public IObjectPool <T> CreateSingleSpawnObjectPool <T>() where T : ObjectBase
 {
     return(m_ObjectPoolManager.CreateSingleSpawnObjectPool <T>());
 }
 /// <summary>
 /// 创建允许单次获取的对象池
 /// </summary>
 /// <typeparam name="T">对象类型</typeparam>
 /// <param name="allowMulti">是否允许多次获取对象</param>
 /// <returns>创建的对象池</returns>
 public IObjectPool <T> CreateSpawnObjectPool <T>(bool allowMulti) where T : ObjectBase
 {
     return(allowMulti ? m_ObjectPoolManager.CreateMultiSpawnObjectPool <T>() : m_ObjectPoolManager.CreateSingleSpawnObjectPool <T>());
 }