using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
|
/// <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) {
|
lock (_lock) {
|
if (_inst == null) {
|
_inst = new UIFrameMgr();
|
}
|
}
|
}
|
return _inst;
|
}
|
}
|
|
// 帧动画资源缓存
|
private Dictionary<string, List<Sprite>> allFrameDic = new Dictionary<string, List<Sprite>>();
|
// 是否已初始化
|
private bool isInitialized = false;
|
|
public UIFrameMgr()
|
{
|
Init();
|
}
|
|
/// <summary>
|
/// 初始化管理器
|
/// </summary>
|
public void Init()
|
{
|
if (isInitialized)
|
return;
|
|
allFrameDic.Clear();
|
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++)
|
{
|
string spritePath = "Sprite/" + cfg.folder;
|
string spriteName = StringUtility.Contact(cfg.name, "_", i);
|
|
Sprite sprite = ResManager.Instance.LoadAsset<Sprite>(spritePath, spriteName);
|
if (sprite != null)
|
{
|
spriteList.Add(sprite);
|
}
|
}
|
|
if (spriteList.Count > 0)
|
{
|
allFrameDic.Add(cfg.name, spriteList);
|
}
|
}
|
|
/// <summary>
|
/// 获取帧动画资源
|
/// </summary>
|
public List<Sprite> GetDynamicImage(string key)
|
{
|
// 按需加载资源
|
if (!allFrameDic.ContainsKey(key))
|
{
|
LoadFrameSprites(FrameAnimationConfig.Get(key));
|
}
|
|
if (allFrameDic.TryGetValue(key, out var list))
|
{
|
return list;
|
}
|
return null;
|
}
|
|
/// <summary>
|
/// 检查是否包含指定帧动画
|
/// </summary>
|
public bool ContainsDynamicImage(string key)
|
{
|
return FrameAnimationConfig.HasKey(key);
|
}
|
|
|
/// <summary>
|
/// 预加载指定帧动画
|
/// </summary>
|
public void PreloadDynamicImage(string key)
|
{
|
if (!allFrameDic.ContainsKey(key))
|
{
|
LoadFrameSprites(FrameAnimationConfig.Get(key));
|
}
|
}
|
}
|