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 //上下02 右1 左3 public Dictionary> fightCardItemPools = new Dictionary>(); public Dictionary> disCardItemPools = new Dictionary>(); public Dictionary> havCardItemPools = new Dictionary>(); 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.ContainsKey(abName)) { return cardSpritePool[abName]; } 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); if (!cardSpritePool.ContainsKey(abName)) { 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; } } }