123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- using System;
- using System.Collections.Generic;
- using System.Text.RegularExpressions;
- using UnityEngine;
- namespace ET.Client
- {
- public class GameObjectPool : Singleton<GameObjectPool>
- {
- private readonly Dictionary<string, AudioClip> audioPool = new();
- private readonly Dictionary<string, Sprite> cardSpritePool = new();
- //scroll item list
- //上下02 右1 左3
- public Dictionary<int, List<GameObject>> fightCardItemPools = new Dictionary<int, List<GameObject>>();
- public Dictionary<int, List<GameObject>> disCardItemPools = new Dictionary<int, List<GameObject>>();
- public Dictionary<int, List<GameObject>> havCardItemPools = new Dictionary<int, List<GameObject>>();
- public List<GameObject> chatFastItemPools = new List<GameObject>();
- public List<GameObject> chatFaceItemPools = new List<GameObject>();
- List<int> arealySelCardList = new List<int>();
- 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<AudioClip> 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<Sprite> 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<int> GetRealySelCardList()
- {
- arealySelCardList.Sort();
- return arealySelCardList;
- }
- }
- }
|