184 lines
6.1 KiB
C#
184 lines
6.1 KiB
C#
|
|
using Cysharp.Threading.Tasks;
|
|||
|
|
using Stary.Evo;
|
|||
|
|
using UnityEngine;
|
|||
|
|
using YooAsset;
|
|||
|
|
|
|||
|
|
namespace Main
|
|||
|
|
{
|
|||
|
|
public interface IAudioTableData : IData
|
|||
|
|
{
|
|||
|
|
UniTask LoadData(string audiotabledata_asset, string uitabledata_asset);
|
|||
|
|
Stary.Evo.TableTextConversion.AudioTableData.MessageInfo GetAudioInfo(string auid);
|
|||
|
|
UniTask<AudioClip> GetAudioClip(string auid);
|
|||
|
|
AudioTableData.AudioToUITableData GetAudioToUIInfo(string auid);
|
|||
|
|
UniTask<AudioTableData.AudioToUIData> GetAudioClipToUISprite(string auid);
|
|||
|
|
Stary.Evo.TableTextConversion.UITableData.MessageInfo GetUIInfo(string uiid);
|
|||
|
|
UniTask<Sprite> GetUISprite(string uiid);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
public class AudioTableData : AbstractData, IAudioTableData
|
|||
|
|
{
|
|||
|
|
private Stary.Evo.TableTextConversion.AudioTableData audioTableData;
|
|||
|
|
|
|||
|
|
private Stary.Evo.TableTextConversion.UITableData uiTableDatas;
|
|||
|
|
|
|||
|
|
protected override async void OnInit()
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public async UniTask LoadData(string audiotabledata_asset, string uitabledata_asset)
|
|||
|
|
{
|
|||
|
|
var audioHandle =
|
|||
|
|
YooAssets.LoadAssetAsync<Stary.Evo.TableTextConversion.AudioTableData>(audiotabledata_asset);
|
|||
|
|
await audioHandle.Task;
|
|||
|
|
audioTableData = audioHandle.GetAssetObject<Stary.Evo.TableTextConversion.AudioTableData>();
|
|||
|
|
|
|||
|
|
var UIHandle =
|
|||
|
|
YooAssets.LoadAssetAsync<Stary.Evo.TableTextConversion.UITableData>(uitabledata_asset);
|
|||
|
|
await UIHandle.Task;
|
|||
|
|
uiTableDatas = UIHandle.GetAssetObject<Stary.Evo.TableTextConversion.UITableData>();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取音频数据
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="auid"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public Stary.Evo.TableTextConversion.AudioTableData.MessageInfo GetAudioInfo(string auid)
|
|||
|
|
{
|
|||
|
|
var info = audioTableData.infos.Find(x => x.auid == auid);
|
|||
|
|
if (info != null && !info.filename.Contains("Audios"))
|
|||
|
|
{
|
|||
|
|
info.filename = "Audios_" + info.filename;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return info;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取音频
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="auid"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public async UniTask<AudioClip> GetAudioClip(string auid)
|
|||
|
|
{
|
|||
|
|
var info=GetAudioInfo(auid);
|
|||
|
|
var handle = YooAssets.LoadAssetAsync<AudioClip>(info.filename);
|
|||
|
|
await handle.Task;
|
|||
|
|
if (handle.Status == EOperationStatus.Succeed)
|
|||
|
|
{
|
|||
|
|
return handle.GetAssetObject<AudioClip>();
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
Debug.LogError(
|
|||
|
|
$"加载音频失败,错误的id为:{auid},错误的音频名称为:{info.filename},错误的错误信息为:{handle.LastError}");
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取音频数据获取UI数据
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="auid"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public AudioToUITableData GetAudioToUIInfo(string auid)
|
|||
|
|
{
|
|||
|
|
var info=GetAudioInfo(auid);
|
|||
|
|
|
|||
|
|
Stary.Evo.TableTextConversion.UITableData.MessageInfo messageInfo = GetUIInfo(info.uirelated);
|
|||
|
|
if (messageInfo != null)
|
|||
|
|
{
|
|||
|
|
return new AudioToUITableData()
|
|||
|
|
{
|
|||
|
|
audioFileName = info.filename,
|
|||
|
|
UIMessageInfo = messageInfo
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
Debug.LogError($"没有找到对应的uiid,错误的id为:{info.uirelated}");
|
|||
|
|
return default;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取音频数据获取UI数据
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="auid"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public async UniTask<AudioToUIData> GetAudioClipToUISprite(string auid)
|
|||
|
|
{
|
|||
|
|
var info=GetAudioToUIInfo(auid);
|
|||
|
|
AudioClip audioClip = await GetAudioClip(auid);
|
|||
|
|
Sprite sprite = await GetUISprite(info.UIMessageInfo.uiid);
|
|||
|
|
|
|||
|
|
if (audioClip != null && sprite != null)
|
|||
|
|
{
|
|||
|
|
return new AudioToUIData()
|
|||
|
|
{
|
|||
|
|
audioClip = audioClip,
|
|||
|
|
sprite = sprite
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
Debug.LogError($"没有找到对应的uiid,错误的id为:{info.UIMessageInfo.uiid}");
|
|||
|
|
return default;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取UI数据
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="uiid"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public Stary.Evo.TableTextConversion.UITableData.MessageInfo GetUIInfo(string uiid)
|
|||
|
|
{
|
|||
|
|
var info = uiTableDatas.infos.Find(x => x.uiid == uiid);
|
|||
|
|
if (info != null && !info.filename.Contains("Sprites_"))
|
|||
|
|
{
|
|||
|
|
info.filename = "Sprites_" + info.filename;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return info;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取UI
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="auid"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public async UniTask<Sprite> GetUISprite(string uiid)
|
|||
|
|
{
|
|||
|
|
var info = GetUIInfo(uiid);
|
|||
|
|
|
|||
|
|
var handle = YooAssets.LoadAssetAsync<Sprite>(info.filename);
|
|||
|
|
await handle.Task;
|
|||
|
|
if (handle.Status == EOperationStatus.Succeed)
|
|||
|
|
{
|
|||
|
|
return handle.GetAssetObject<Sprite>();
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
Debug.LogError(
|
|||
|
|
$"加载ui失败,错误的id为:{uiid},错误的ui名称为:{info.filename},错误的错误信息为:{handle.LastError}");
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void Dispose()
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public struct AudioToUITableData
|
|||
|
|
{
|
|||
|
|
public string audioFileName;
|
|||
|
|
public Stary.Evo.TableTextConversion.UITableData.MessageInfo UIMessageInfo;
|
|||
|
|
}
|
|||
|
|
public struct AudioToUIData
|
|||
|
|
{
|
|||
|
|
public AudioClip audioClip;
|
|||
|
|
public Sprite sprite;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|