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