/// <summary> /// 增加实体组。 /// </summary> /// <param name="entityGroupName">实体组名称。</param> /// <param name="instanceAutoReleaseInterval">实体实例对象池自动释放可释放对象的间隔秒数。</param> /// <param name="instanceCapacity">实体实例对象池容量。</param> /// <param name="instanceExpireTime">实体实例对象池对象过期秒数。</param> /// <param name="instancePriority">实体实例对象池的优先级。</param> /// <param name="entityGroupHelper">实体组辅助器。</param> /// <returns>是否增加实体组成功。</returns> public bool AddEntityGroup(string entityGroupName, float instanceAutoReleaseInterval, int instanceCapacity, float instanceExpireTime, int instancePriority, IEntityGroupHelper entityGroupHelper) { if (string.IsNullOrEmpty(entityGroupName)) { throw new GameFrameworkException("Entity group name is invalid."); } if (entityGroupHelper == null) { throw new GameFrameworkException("Entity group helper is invalid."); } if (m_ObjectPoolManager == null) { throw new GameFrameworkException("You must set object pool manager first."); } if (HasEntityGroup(entityGroupName)) { return(false); } m_EntityGroups.Add(entityGroupName, new EntityGroup(entityGroupName, instanceAutoReleaseInterval, instanceCapacity, instanceExpireTime, instancePriority, entityGroupHelper, m_ObjectPoolManager)); return(true); }
/// <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 GameFrameworkLinkedList <IEntity>(); m_CachedNode = null; }