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