zip压缩加载测试
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user