private void _OnCacheFull() { if (m_deSpawnCount > ResourceConfig.MAX_POOL_COUNT) { ResourcePool first = _GetCacheFirst(); if (first != null) { m_deSpawnCount -= first.GetObjectCount(); first.Clear(false); _RemoveCacheValue(first.Id); } } }
public void Merge(ResourcePool data) { Log.Assert(data.m_asset == this.m_asset); MergeRefCount(data); foreach (var gameObject in data.m_objectList) { m_objectList.AddLast(gameObject); } data.m_objectList.Clear(); data.Clear(true); }
private void _ClearResourcePool(ulong pathHash) { ResourcePool resourcePool = null; if (!m_pathHash2Pool.TryGetValue(pathHash, out resourcePool)) { return; } m_pathHash2Pool.Remove(pathHash); if (resourcePool != null) { int count = resourcePool.GetObjectCount(); if (count > 0) { m_deSpawnCount -= count; _RemoveCacheValue(resourcePool.Id); } resourcePool.Clear(true); } }