Files
plugin-library/Assets/05.TableTextConversion/RunTime/Core/UITableDataCore.cs
2025-11-12 14:33:55 +08:00

82 lines
2.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using Cysharp.Threading.Tasks;
using UnityEngine;
#if YooAssets
using YooAsset;
#endif
namespace Stary.Evo.TableTextConversion
{
public interface IUITableDataCore : ITableDataCore
{
UniTask<UIEntity> GetUIAssetInfo(string uiid);
UniTask<Sprite> GetSpriteAsset(string uiid);
}
#if YooAssets
public class UITableDataCore : IUITableDataCore, IDisposable
{
public string TableName => "Config_UITableData";
public bool IsLoad { get; set; }
private Stary.Evo.TableTextConversion.UITableData uiTableDatas;
public async UniTask LoadData()
{
var handle = YooAssets.LoadAssetAsync<UITableData>(TableName);
await handle.Task;
uiTableDatas = handle.GetAssetObject<UITableData>();
if (uiTableDatas == null)
{
Debug.LogError($"加载UI表失败请排查config下是否存在【{TableName}】表");
return;
}
IsLoad = true;
}
public async UniTask<UIEntity> GetUIAssetInfo(string uiid)
{
if (!IsLoad)
{
await LoadData();
}
var info = uiTableDatas.infos.Find(x => x.uiid == uiid);
if (info != null && !info.filename.Contains("Sprites_"))
{
info.filename = "Sprites_" + info.filename;
}
return info;
}
public async UniTask<Sprite> GetSpriteAsset(string uiid)
{
if (!IsLoad)
{
await LoadData();
}
var info = await GetUIAssetInfo(uiid);
var handle = YooAssets.LoadAssetAsync<Sprite>(info.filename);
await handle.Task;
if (handle.Status == EOperationStatus.Succeed)
{
return handle.GetAssetObject<Sprite>();
}
else
{
Debug.LogError(
$"加载音频失败,错误的id为:{uiid},错误的音频名称为:{info.filename},错误的错误信息为:{handle.LastError}");
return null;
}
}
public void Dispose()
{
uiTableDatas = null;
}
}
#endif
}