zip压缩加载测试

This commit is contained in:
2025-05-23 18:26:47 +08:00
parent ada423ac91
commit cbd48e8411
147 changed files with 7855 additions and 6 deletions

View File

@@ -0,0 +1,87 @@
using System;
using System.Threading;
using Cysharp.Threading.Tasks;
using Main;
using Stary.Evo;
using Stary.Evo.UIFarme;
using UnityEngine;
using YooAsset;
namespace Main
{
public interface IDigitalHumanVoiceSystem : ISystem
{
UniTask PlayVoice(string auid, Action callback = null);
UniTask PlayTest(string auid, Action callback = null);
void PlayImage(string uiid);
}
public class DigitalHumanVoiceSystem : AbstractSystem, IDigitalHumanVoiceSystem
{
private CancellationTokenSource tokenSource;
public async UniTask PlayVoice(string auid, Action callback = null)
{
DisposeTokenSource();
tokenSource = new CancellationTokenSource();
var info = this.GetData<IAudioTableData>().GetAudioToUIInfo(auid);
var handle1 = YooAssets.LoadAssetAsync<AudioClip>(info.audioFileName);
await handle1.WithCancellation(tokenSource.Token);
AudioClip audioClip = handle1.GetAssetObject<AudioClip>();
var handle2 = YooAssets.LoadAssetAsync<Sprite>(info.UIMessageInfo.filename);
await handle2.WithCancellation(tokenSource.Token);
Sprite sprite = handle2.GetAssetObject<Sprite>();
MainArchitecture.Interface.GetSystem<IDigitalHuman>().SetTalkState(audioClip, sprite);
await UniTask.Delay(TimeSpan.FromSeconds(audioClip.length+1f), cancellationToken: tokenSource.Token);
callback?.Invoke();
}
public async UniTask PlayTest(string auid, Action callback = null)
{
DisposeTokenSource();
tokenSource = new CancellationTokenSource();
var info = this.GetData<IAudioTableData>().GetAudioToUIInfo(auid);
var handle1 = YooAssets.LoadAssetAsync<AudioClip>(info.audioFileName);
await handle1.WithCancellation(tokenSource.Token);
AudioClip audioClip = handle1.GetAssetObject<AudioClip>();
MainArchitecture.Interface.GetSystem<IDigitalHuman>().SetTalkState(audioClip, info.UIMessageInfo.subtitle);
await UniTask.Delay(TimeSpan.FromSeconds(audioClip.length), cancellationToken: tokenSource.Token);
callback?.Invoke();
}
public async void PlayImage(string uiid)
{
DisposeTokenSource();
tokenSource = new CancellationTokenSource();
var info =this.GetData<IAudioTableData>().GetUIInfo(uiid);
var handle1 = YooAssets.LoadAssetAsync<Sprite>(info.filename);
await handle1.WithCancellation(tokenSource.Token);
Sprite sprite = handle1.GetAssetObject<Sprite>();
MainArchitecture.Interface.GetSystem<IDigitalHuman>().SetTalkState( sprite);
}
protected override void OnInit()
{
}
private void DisposeTokenSource()
{
if (tokenSource != null && !tokenSource.IsCancellationRequested)
{
tokenSource.Cancel();
tokenSource.Dispose();
tokenSource = null;
}
}
public override void Dispose()
{
DisposeTokenSource();
}
}
}