using System; using Cysharp.Threading.Tasks; using UnityEngine; using YooAsset; namespace Stary.Evo.TableTextConversion { public interface IVideoTableDataCore : ITableDataCore { UniTask LoadData(); UniTask PlayVideoName(string vidid); } public class VideoTableDataCore : IVideoTableDataCore, IDisposable { public string TableName => "Config_VideoTableData"; public bool IsLoad { get; set; } private Stary.Evo.TableTextConversion.VideoTableData videoTableDatas; public async UniTask LoadData() { var handle = YooAssets.LoadAssetAsync(TableName); await handle.Task; videoTableDatas = handle.GetAssetObject(); if (videoTableDatas == null) { Debug.LogError($"加载视频表失败,请排查config下是否存在【{TableName}】表"); return; } IsLoad = true; } public async UniTask PlayVideoName(string vidid) { if (!IsLoad) { await LoadData(); } var info = videoTableDatas.infos.Find(x => x.vidid == vidid); if (info != null && !info.filename.Contains("Video")) { info.filename = "Video_" + info.filename; } if (info != null && !info.videoframeName.Contains("Sprites")) { info.videoframeName = "Sprites_" + info.videoframeName; } return info; } public void Dispose() { videoTableDatas = null; } } }