Files
plugin-library/Assets/05.TableTextConversion/RunTime/Core/UITableData.cs

80 lines
2.3 KiB
C#
Raw Normal View History

2025-09-04 11:43:35 +08:00
using System;
using Cysharp.Threading.Tasks;
using Stary.Evo;
using UnityEngine;
using YooAsset;
namespace X_04_04
{
public interface IUITableData : ITableData
{
UniTask<Stary.Evo.TableTextConversion.UITableData.MessageInfo> GetUIInfo(string uiid);
UniTask<Sprite> GetSprite(string uiid);
}
public class UITableData : IUITableData, 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<Stary.Evo.TableTextConversion.UITableData>(TableName);
await handle.Task;
uiTableDatas = handle.GetAssetObject<Stary.Evo.TableTextConversion.UITableData>();
if (uiTableDatas == null)
{
Debug.LogError($"加载UI表失败请排查config下是否存在【{TableName}】表");
return;
}
IsLoad = true;
}
public async UniTask<Stary.Evo.TableTextConversion.UITableData.MessageInfo> GetUIInfo(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> GetSprite(string uiid)
{
if (!IsLoad)
{
await LoadData();
}
var info = await GetUIInfo(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;
}
}
}