using System; using System.Collections.Generic; using System.Text.RegularExpressions; using UnityEngine; namespace ET.Client { public class GameObjectPool : Singleton { private readonly Dictionary audioPool = new(); private readonly Dictionary cardSpritePool = new(); //scroll item list public List fightCardItemPools = new List(); public List disCardItemPools = new List(); public List chatFastItemPools = new List(); public List chatFaceItemPools = new List(); List arealySelCardList = new List(); public void ClearCache() { foreach(var ac in audioPool.Values) { ac.UnloadAudioData(); } audioPool.Clear(); cardSpritePool.Clear(); disCardItemPools.Clear(); fightCardItemPools.Clear(); chatFastItemPools.Clear(); arealySelCardList.Clear(); } public async ETTask AcquireSound(string abName) { if(audioPool.TryGetValue(abName, out var ac)) { return ac; } //Log.Warning($"not cache audio: ({key})"); await ResourcesComponentHelper.Instance.LoadAssetAsync(GameUtil.Instance.GetSceneComponent(), "fightsound"); UnityEngine.Object soundObj = ResourcesComponentHelper.Instance.GetAssetAsync("fightsound", abName); var aac = soundObj as AudioClip ; aac.LoadAudioData(); audioPool.Add(abName, aac); return aac; } public async ETTask AcquireSprite(string abName) { if (cardSpritePool.TryGetValue(abName, out var sp)) { return sp; } await ResourcesComponentHelper.Instance.LoadAssetAsync(GameUtil.Instance.GetSceneComponent(), "majiangatlas"); UnityEngine.Object spriteObj = ResourcesComponentHelper.Instance.GetAssetAsync("majiangatlas", abName); Texture2D texture = spriteObj as Texture2D; var sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f), 100f); cardSpritePool.Add(abName, sprite); return sprite; } public void OperatoRarealySelCardList(int operatorType,int val) { if (operatorType == 0) { arealySelCardList.Add(val); } else { arealySelCardList.Remove(val); } } public void ClearRealySelCardList() { arealySelCardList.Clear(); } public List GetRealySelCardList() { arealySelCardList.Sort(); return arealySelCardList; } } }