예제 #1
0
        /// <summary>
        /// 销毁缓存池
        /// </summary>
        internal void DestroyPool()
        {
            completeCallback = null;
            if (m_PreloadTimerTask != null)
            {
                TimerManager.GetInstance().RemoveTimer(m_PreloadTimerTask);
                m_PreloadTimerTask = null;
            }

            m_UsedItemList.Clear();

            for (int i = m_UnusedItemQueue.Count - 1; i >= 0; i--)
            {
                UnityObject.Destroy(m_UnusedItemQueue.Dequeue());
            }
            m_UnusedItemQueue.Clear();

            if (m_TemplateType == PoolTemplateType.PrefabInstance || m_TemplateType == PoolTemplateType.RuntimeInstance)
            {
                UnityObject.Destroy(m_InstanceOrPrefabTemplate);
            }

            m_AssetPath = null;
            m_SpawnPool = null;
            m_InstanceOrPrefabTemplate = null;
            IsAutoClean = false;
        }
예제 #2
0
        /// <summary>
        /// 使用定时器进行预加载结束
        /// </summary>
        private void OnPoolComplete()
        {
            completeCallback?.Invoke(m_SpawnPool.PoolName, m_AssetPath);
            completeCallback = null;

            if (m_PreloadTimerTask != null)
            {
                TimerManager.GetInstance().RemoveTimer(m_PreloadTimerTask);
                m_PreloadTimerTask = null;
            }
        }