1
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
using System;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
using YooAsset;
|
||||
|
||||
namespace Stary.Evo.TableTextConversion
|
||||
{
|
||||
public interface IUITableDataCore : ITableDataCore
|
||||
{
|
||||
UniTask<Stary.Evo.TableTextConversion.UITableData.MessageInfo> GetUIInfo(string uiid);
|
||||
UniTask<Sprite> GetSprite(string uiid);
|
||||
}
|
||||
|
||||
|
||||
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<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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user