This commit is contained in:
2025-11-12 14:22:04 +08:00
parent 7c8bb4b46c
commit 7aeda74f41
15 changed files with 280 additions and 129 deletions

View File

@@ -0,0 +1,30 @@
using System;
using Sirenix.OdinInspector;
namespace Stary.Evo.TableTextConversion
{
[Serializable]
public class AudioEntity
{
// 序号
[GUIColor(0, 1, 0)] public int index;
// 名称
public string auid;
public AudioType autype;
// 名称描述
public string filename;
public string voice;
public string uirelated;
}
public enum AudioType
{
Null,
music,
effect,
sound,
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: a1a28b6c544f4e939d68e56f08d87403
timeCreated: 1762855901

View File

@@ -9,29 +9,6 @@ namespace Stary.Evo.TableTextConversion
public class AudioTableData : ScriptableObject, ITableData
{
public string TableName { get; }
public List<MessageInfo> infos;
[Serializable]
public class MessageInfo
{
// 序号
[GUIColor(0, 1, 0)] public int index;
// 名称
public string auid;
public AudioType autype;
// 名称描述
public string filename;
public string voice;
public string uirelated;
}
public enum AudioType
{
Null,
music,
effect,
sound,
}
public List<AudioEntity> infos;
}
}

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using Sirenix.OdinInspector;
namespace Stary.Evo.TableTextConversion
{
[Serializable]
public class UIEntity
{
// 序号
[GUIColor(0, 1, 0)] public int index;
// 名称
public string uiid;
// 名称描述
public string filename;
public string uitype;
public List<SubtitleInfo> subtitle;
}
[Serializable]
public class SubtitleInfo
{
public string lineid;
public string subtitle;
public float start;
public float end;
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: aa8c79fd9e99417abfdebb6ffa12629b
timeCreated: 1762855912

View File

@@ -9,30 +9,7 @@ namespace Stary.Evo.TableTextConversion
public class UITableData : ScriptableObject, ITableData
{
public string TableName { get; }
public List<MessageInfo> infos;
[Serializable]
public class MessageInfo
{
// 序号
[GUIColor(0, 1, 0)] public int index;
// 名称
public string uiid;
// 名称描述
public string filename;
public string uitype;
public List<SubtitleInfo> subtitle;
}
[Serializable]
public class SubtitleInfo
{
public string lineid;
public string subtitle;
public float start;
public float end;
}
public List<UIEntity> infos;
}
}

View File

@@ -0,0 +1,24 @@
using System;
using Sirenix.OdinInspector;
namespace Stary.Evo.TableTextConversion
{
[Serializable]
public class VideoEntity
{
// 序号
[GUIColor(0, 1, 0)] public int index;
// 名称
public string vidid;
// 名称描述
public string filename;
public string vidtype;
public string location;
public float time;
public bool subtitle;
public string videoframeName;
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: f6b98bb6dbce4f999d0ca6d2d08f6900
timeCreated: 1762855926

View File

@@ -9,27 +9,7 @@ namespace Stary.Evo.TableTextConversion
public class VideoTableData : ScriptableObject, ITableData
{
public string TableName { get; }
public List<MessageInfo> infos;
[Serializable]
public class MessageInfo
{
// 序号
[GUIColor(0, 1, 0)] public int index;
// 名称
public string vidid;
// 名称描述
public string filename;
public string vidtype;
public string location;
public float time;
public bool subtitle;
public string videoframeName;
}
public List<VideoEntity> infos;
}
}

View File

@@ -7,14 +7,14 @@ namespace Stary.Evo.TableTextConversion
{
public interface IAudioTableDataCore : ITableDataCore
{
UniTask<Stary.Evo.TableTextConversion.AudioTableData.MessageInfo> GetAudioInfo(string auid);
UniTask<AudioClip> GetAudioClip(string auid);
UniTask<AudioEntity> GetAudioAssetInfo(string auid);
UniTask<AudioClip> GetAudioAssetClip(string auid);
}
#if YooAssets
public class AudioTableDataCore : IAudioTableDataCore, IDisposable
{
private Stary.Evo.TableTextConversion.AudioTableData audioTableData;
private AudioTableData audioTableData;
public string TableName => "Config_AudioTableData";
public bool IsLoad { get; set; }
@@ -23,14 +23,15 @@ namespace Stary.Evo.TableTextConversion
public async UniTask LoadData()
{
var audioHandle =
YooAssets.LoadAssetAsync<Stary.Evo.TableTextConversion.AudioTableData>(TableName);
YooAssets.LoadAssetAsync<AudioTableData>(TableName);
await audioHandle.Task;
audioTableData = audioHandle.GetAssetObject<Stary.Evo.TableTextConversion.AudioTableData>();
audioTableData = audioHandle.GetAssetObject<AudioTableData>();
if (audioTableData == null)
{
Debug.LogError($"加载音频表失败请排查config下是否存在【{TableName}】表");
return;
}
IsLoad = true;
}
@@ -40,7 +41,7 @@ namespace Stary.Evo.TableTextConversion
/// </summary>
/// <param name="auid"></param>
/// <returns></returns>
public async UniTask<Stary.Evo.TableTextConversion.AudioTableData.MessageInfo> GetAudioInfo(string auid)
public async UniTask<AudioEntity> GetAudioAssetInfo(string auid)
{
if (!IsLoad)
{
@@ -61,14 +62,14 @@ namespace Stary.Evo.TableTextConversion
/// </summary>
/// <param name="auid"></param>
/// <returns></returns>
public async UniTask<AudioClip> GetAudioClip(string auid)
public async UniTask<AudioClip> GetAudioAssetClip(string auid)
{
if (!IsLoad)
{
await LoadData();
}
var info = await GetAudioInfo(auid);
var info = await GetAudioAssetInfo(auid);
var handle = YooAssets.LoadAssetAsync<AudioClip>(info.filename);
await handle.Task;
if (handle.Status == EOperationStatus.Succeed)
@@ -89,4 +90,5 @@ namespace Stary.Evo.TableTextConversion
audioTableData = null;
}
}
#endif
}

View File

@@ -24,7 +24,7 @@ namespace Stary.Evo.TableTextConversion
public IAudioTableDataCore AudioTableCore;
public IUITableDataCore UITableCore;
public IVideoTableDataCore VideoTableCore;
#if YooAssets
// 私有构造函数,防止外部实例化
private TableSystem()
{
@@ -32,6 +32,7 @@ namespace Stary.Evo.TableTextConversion
UITableCore = new UITableDataCore();
VideoTableCore = new VideoTableDataCore();
}
#endif
public void Dispose()
{

View File

@@ -7,11 +7,11 @@ namespace Stary.Evo.TableTextConversion
{
public interface IUITableDataCore : ITableDataCore
{
UniTask<Stary.Evo.TableTextConversion.UITableData.MessageInfo> GetUIInfo(string uiid);
UniTask<Sprite> GetSprite(string uiid);
UniTask<UIEntity> GetUIAssetInfo(string uiid);
UniTask<Sprite> GetSpriteAsset(string uiid);
}
#if YooAssets
public class UITableDataCore : IUITableDataCore, IDisposable
{
public string TableName => "Config_UITableData";
@@ -21,9 +21,9 @@ namespace Stary.Evo.TableTextConversion
public async UniTask LoadData()
{
var handle = YooAssets.LoadAssetAsync<Stary.Evo.TableTextConversion.UITableData>(TableName);
var handle = YooAssets.LoadAssetAsync<UITableData>(TableName);
await handle.Task;
uiTableDatas = handle.GetAssetObject<Stary.Evo.TableTextConversion.UITableData>();
uiTableDatas = handle.GetAssetObject<UITableData>();
if (uiTableDatas == null)
{
Debug.LogError($"加载UI表失败请排查config下是否存在【{TableName}】表");
@@ -32,7 +32,7 @@ namespace Stary.Evo.TableTextConversion
IsLoad = true;
}
public async UniTask<Stary.Evo.TableTextConversion.UITableData.MessageInfo> GetUIInfo(string uiid)
public async UniTask<UIEntity> GetUIAssetInfo(string uiid)
{
if (!IsLoad)
{
@@ -48,14 +48,14 @@ namespace Stary.Evo.TableTextConversion
return info;
}
public async UniTask<Sprite> GetSprite(string uiid)
public async UniTask<Sprite> GetSpriteAsset(string uiid)
{
if (!IsLoad)
{
await LoadData();
}
var info = await GetUIInfo(uiid);
var info = await GetUIAssetInfo(uiid);
var handle = YooAssets.LoadAssetAsync<Sprite>(info.filename);
await handle.Task;
if (handle.Status == EOperationStatus.Succeed)
@@ -76,4 +76,5 @@ namespace Stary.Evo.TableTextConversion
uiTableDatas = null;
}
}
#endif
}

View File

@@ -8,32 +8,33 @@ namespace Stary.Evo.TableTextConversion
public interface IVideoTableDataCore : ITableDataCore
{
UniTask LoadData();
UniTask<Stary.Evo.TableTextConversion.VideoTableData.MessageInfo> PlayVideoName(string vidid);
UniTask<VideoEntity> PlayVideoAssetName(string vidid);
}
#if YooAssets
public class VideoTableDataCore : IVideoTableDataCore, IDisposable
{
public string TableName => "Config_VideoTableData";
public bool IsLoad { get; set; }
private Stary.Evo.TableTextConversion.VideoTableData videoTableDatas;
private VideoTableData videoTableDatas;
public async UniTask LoadData()
{
var handle = YooAssets.LoadAssetAsync<Stary.Evo.TableTextConversion.VideoTableData>(TableName);
var handle = YooAssets.LoadAssetAsync<VideoTableData>(TableName);
await handle.Task;
videoTableDatas = handle.GetAssetObject<Stary.Evo.TableTextConversion.VideoTableData>();
videoTableDatas = handle.GetAssetObject<VideoTableData>();
if (videoTableDatas == null)
{
Debug.LogError($"加载视频表失败请排查config下是否存在【{TableName}】表");
return;
}
IsLoad = true;
}
public async UniTask<Stary.Evo.TableTextConversion.VideoTableData.MessageInfo> PlayVideoName(string vidid)
public async UniTask<VideoEntity> PlayVideoAssetName(string vidid)
{
if (!IsLoad)
{
@@ -59,4 +60,5 @@ namespace Stary.Evo.TableTextConversion
videoTableDatas = null;
}
}
#endif
}