From 3b2a6bb9047cfce9f501593b3669a9c1af6c5df4 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期三, 05 十一月 2025 17:40:23 +0800
Subject: [PATCH] 130 战斗修改回合样式
---
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..7a193e3 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(FrameAnimationConfig 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(FrameAnimationConfig.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 FrameAnimationConfig.HasKey(key);
}
-
-}
+
+
+ /// <summary>
+ /// 棰勫姞杞芥寚瀹氬抚鍔ㄧ敾
+ /// </summary>
+ public void PreloadDynamicImage(string key)
+ {
+ if (!allFrameDic.ContainsKey(key))
+ {
+ LoadFrameSprites(FrameAnimationConfig.Get(key));
+ }
+ }
+}
\ No newline at end of file
--
Gitblit v1.8.0