From 746dec7b2deec0d87a90153997a47d797f6d9b81 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期四, 26 六月 2025 22:07:23 +0800 Subject: [PATCH] 0312 主界面功能 增加真机debug模块:1.输出日志 2.支持非SDK登录 3.GM命令 4.分支下载 --- Main/Core/Frame/UIFrameMgr.cs | 128 ++++++++++++++++++++++++++---------------- 1 files changed, 78 insertions(+), 50 deletions(-) diff --git a/Main/Core/Frame/UIFrameMgr.cs b/Main/Core/Frame/UIFrameMgr.cs index b0f994b..87d6ad3 100644 --- a/Main/Core/Frame/UIFrameMgr.cs +++ b/Main/Core/Frame/UIFrameMgr.cs @@ -1,84 +1,112 @@ -锘縰sing System.Collections; +锘匡豢using System.Collections; using System.Collections.Generic; using UnityEngine; - -public class UIFrameMgr { +/// <summary> +/// UI甯у姩鐢荤鐞嗗櫒 - 璐熻矗甯у姩鐢昏祫婧愮殑鍔犺浇鍜岀鐞� +/// </summary> +public class UIFrameMgr { private static UIFrameMgr _inst = null; + private static readonly object _lock = new object(); + public static UIFrameMgr Inst { get { if (_inst == null) { - _inst = new UIFrameMgr(); + lock (_lock) { + if (_inst == null) { + _inst = new UIFrameMgr(); + } + } } return _inst; } } - // 琛ㄤ腑鐨勬墍鏈夎褰� + // 甯у姩鐢昏祫婧愮紦瀛� private Dictionary<string, List<Sprite>> allFrameDic = new Dictionary<string, List<Sprite>>(); - //鍙湁鑱婂ぉ琛ㄦ儏鐢ㄥ埌鐨� 鏍规嵁璺緞frame鏉ュ垝鍒� - private List<string> chatFaces = new List<string>(); + // 鏄惁宸插垵濮嬪寲 + private bool isInitialized = false; public UIFrameMgr() { Init(); } + /// <summary> + /// 鍒濆鍖栫鐞嗗櫒 + /// </summary> public void Init() { + if (isInitialized) + return; + allFrameDic.Clear(); - chatFaces.Clear(); - var dic = FaceConfig.dic.Values; - foreach (var cfg in dic) + isInitialized = true; + } + + /// <summary> + /// 鍔犺浇鎸囧畾甯у姩鐢昏祫婧� + /// </summary> + private void LoadFrameSprites(FaceConfig cfg) + { + if (allFrameDic.ContainsKey(cfg.name)) + return; + + List<Sprite> spriteList = new List<Sprite>(); + + for (int i = 1; i <= cfg.frameCnt; i++) { - if (cfg.frameType == 1 && !chatFaces.Contains(cfg.name)) + string spritePath = "Sprite/" + cfg.folder; + string spriteName = StringUtility.Contact(cfg.name, "_", i); + + Sprite sprite = ResManager.Instance.LoadAsset<Sprite>(spritePath, spriteName); + if (sprite != null) { - chatFaces.Add(cfg.name); + spriteList.Add(sprite); } - for (int i = 1; i <= cfg.frameCnt; i++) - { - Sprite sprite = ResManager.Instance.LoadAsset<Sprite>("Sprite/" + cfg.folder, StringUtility.Contact(cfg.name, "_", i)); - if (sprite != null) - { - List<Sprite> list = null; - allFrameDic.TryGetValue(cfg.name, out list); - if (list != null) - { - list.Add(sprite); - } - else - { - list = new List<Sprite>(); - list.Add(sprite); - allFrameDic.Add(cfg.name, list); - } - } - } + } + + if (spriteList.Count > 0) + { + allFrameDic.Add(cfg.name, spriteList); } } - //鎵�鏈夊姩鎬佸抚 - public Dictionary<string, List<UnityEngine.Sprite>> GetAllFrame() + /// <summary> + /// 鑾峰彇甯у姩鐢昏祫婧� + /// </summary> + public List<Sprite> GetDynamicImage(string key) { - return allFrameDic; + // 鎸夐渶鍔犺浇璧勬簮 + if (!allFrameDic.ContainsKey(key)) + { + LoadFrameSprites(FaceConfig.Get(key)); + } + + if (allFrameDic.TryGetValue(key, out var list)) + { + return list; + } + return null; } - //鍙湁鑱婂ぉ琛ㄦ儏 - public List<string> GetAllFace() - { - return chatFaces; - } - - public List<UnityEngine.Sprite> GetDynamicImage(string key) - { - List<UnityEngine.Sprite> list = null; - allFrameDic.TryGetValue(key, out list); - return list; - } - + /// <summary> + /// 妫�鏌ユ槸鍚﹀寘鍚寚瀹氬抚鍔ㄧ敾 + /// </summary> public bool ContainsDynamicImage(string key) { - return allFrameDic.ContainsKey(key); + return FaceConfig.HasKey(key); } - -} + + + /// <summary> + /// 棰勫姞杞芥寚瀹氬抚鍔ㄧ敾 + /// </summary> + public void PreloadDynamicImage(string key) + { + if (!allFrameDic.ContainsKey(key)) + { + LoadFrameSprites(FaceConfig.Get(key)); + } + } +} \ No newline at end of file -- Gitblit v1.8.0