/// <summary> /// 清除掉某一个对象的所有对象池缓存 /// </summary> public static void CleanPoolByName(string name) { Debug.Log("CleanPool :" + name); if (recyclePools.ContainsKey(name)) { List <GameObject> l_objList = recyclePools[name]; for (int i = 0; i < l_objList.Count; i++) { GameObject go = l_objList[i]; PoolObject po = go.GetComponent <PoolObject>(); if (po) { po.OnObjectDestroy(); } GameObject.Destroy(go); } l_objList.Clear(); recyclePools.Remove(name); } if (createPools[name].Count == 0) { createPools.Remove(name); AssetsPoolManager.DestroyByPool(name); } }
private void OnDestroy() { if (!string.IsNullOrEmpty(iconName)) { AssetsPoolManager.DestroyByPool(iconName); } }
private void LoadQueue() { if (currentNum >= count) { RunCallBack(); Destroy(); return; } PreloadResourcesDataGenerate da = queueRes[currentNum]; currentNum++; //Debug.Log("da.m_key " + da.m_key); try { Type resType = ReflectionUtils.GetTypeByTypeFullName(da.m_ResType); // object loadRes = AssetsPoolManager.Load(da.m_key); AssetsPoolManager.LoadAsync(da.m_key, resType, (LoadState loadState, object loadRes) => { if (loadState.isDone) { if (loadRes != null) { if (loadRes is GameObject) { GameObject prefab = (GameObject)loadRes; List <GameObject> resList = new List <GameObject>(); for (int i = 0; i < da.m_instantiateNum; i++) { GameObject obj = GameObjectManager.CreateGameObjectByPool(prefab); resList.Add(obj); } foreach (var obj in resList) { GameObjectManager.DestroyGameObjectByPool(obj, !da.m_createInstanceActive); } } else { AssetsPoolManager.DestroyByPool(da.m_key); } } else { if (loadRes == null) { Debug.LogError("Error: 预加载失败 key:" + da.m_key); } } RunCallBack(); LoadQueue(); } }); } catch (Exception e) { Debug.LogError(e); LoadQueue(); } }
/// <summary> /// 清空对象池 /// </summary> public static void CleanPool() { //Debug.LogWarning("清空对象池"); removeObjList.Clear(); foreach (string name in createPools.Keys) { //if (recyclePools.ContainsKey(name)) //{ // List<GameObject> l_objList = recyclePools[name]; // for (int i = 0; i < l_objList.Count; i++) // { // GameObject go = l_objList[i]; // PoolObject po = go.GetComponent<PoolObject>(); // if (po) // { // po.OnObjectDestroy(); // } // GameObject.Destroy(go); // } // l_objList.Clear(); // recyclePools.Remove(name); //} if (createPools[name].Count == 0) { removeObjList.Add(name); AssetsPoolManager.DestroyByPool(name); } } foreach (var item in removeObjList) { createPools.Remove(item); } foreach (var name in recyclePools.Keys) { List <GameObject> l_objList = recyclePools[name]; for (int i = 0; i < l_objList.Count; i++) { GameObject go = l_objList[i]; PoolObject po = go.GetComponent <PoolObject>(); if (po) { po.OnObjectDestroy(); } GameObject.Destroy(go); } l_objList.Clear(); } recyclePools.Clear(); }
public void UnloadClip(AudioAsset asset) { if (asset.audioSource.clip != null) { string name = asset.assetName; asset.audioSource.clip = null; AssetsPoolManager.DestroyByPool(name); } }
private void ClearLoadSprite() { foreach (var item in loadSpriteNames) { int num = item.Value; //Debug.Log("UIBase 回收图片:" + item.Key + ":" + num); AssetsPoolManager.DestroyByPool(item.Key, num); } loadSpriteNames.Clear(); }
public static void Release() { s_languageDataDict.Clear(); isInit = false; foreach (var item in loadTextFileTimesDic) { AssetsPoolManager.DestroyByPool(item.Key, item.Value); } loadTextFileTimesDic.Clear(); }
private void ClearLoadSprite() { foreach (var item in loadSpriteNames) { int num = item.Value; for (int i = 0; i < num; i++) { AssetsPoolManager.DestroyByPool(item.Key); } } loadSpriteNames.Clear(); }
/// <summary> /// 将一个对象放入对象池 /// </summary> /// <param name="go"></param> /// <param name="isSetInactive">是否将放入的物体设为不激活状态(obj.SetActive(false))</param> public static void DestroyGameObjectByPool(GameObject go, bool isSetInactive = true) { string key = go.name.Replace("(Clone)", ""); if (s_objectPool.ContainsKey(key) == false) { s_objectPool.Add(key, new List <GameObject>()); } if (s_objectPool[key].Contains(go)) { throw new Exception("DestroyGameObjectByPool:-> Repeat Destroy GameObject !" + go); } s_objectPool[key].Add(go); if (isSetInactive) { go.SetActive(false); } else { go.transform.position = s_OutOfRange; } go.name = key; go.transform.SetParent(PoolParent); PoolObject po = go.GetComponent <PoolObject>(); if (po) { po.OnRecycle(); } if (createPools.ContainsKey(key) && createPools[key].Contains(go)) { createPools[key].Remove(go); //Debug.LogWarning(go.name + " ==>>" + createPools[key].Count); if (createPools[key].Count == 0) { createPools.Remove(key); AssetsPoolManager.DestroyByPool(key); } } }
private void OnDestroy() { AssetsPoolManager.DestroyByPool(iconName); }