2025-03-10 10:18:11 +08:00

113 lines
4.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Crosstales.RTVoice.Tool;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.Networking;
using ZXK.Framework;
using ZXK.ZPS;
/********************************************************************************
*Create By CG
*Function 文字转语音调用类
*********************************************************************************/
namespace ZXK.UTility
{
public class SpeakManager : MonoSingleton<SpeakManager>
{
private AudioSource _curAudSrc = null;
[SerializeField]
private List<AudioClip> _wqbAudioClips = new List<AudioClip>();
//private Dictionary<string, AudioClip> _wqbAudioClips = new Dictionary<string, AudioClip>();
[SerializeField]
private List<AudioClip> _dhbAudioClips = new List<AudioClip>();
//private Dictionary<string, AudioClip> _dhbAudioClips = new Dictionary<string, AudioClip>();
void Start()
{
_curAudSrc = transform.GetComponent<AudioSource>();
//_wqbAudioClips.Clear();
//string wqbfilePath = System.IO.Path.Combine(Application.streamingAssetsPath, ConstCtrl.AUDIO_WQB_PATH);
//string[] wqbfiles = Directory.GetFiles(wqbfilePath, "*.mp3"); // 假设我们只加载mp3格式的音频
//foreach (string file in wqbfiles)
//{
// StartCoroutine(ReadAudioDataWeb(file, WqbCallback));
//}
//_dhbAudioClips.Clear();
//string dhbfilePath = System.IO.Path.Combine(Application.streamingAssetsPath, ConstCtrl.AUDIO_DHB_PATH);
//string[] dhbfiles = Directory.GetFiles(dhbfilePath, "*.mp3"); // 假设我们只加载mp3格式的音频
//foreach (string file in dhbfiles)
//{
// StartCoroutine(ReadAudioDataWeb(file, DhbCallback));
//}
}
//private void WqbCallback(UnityEngine.Object wqbClip)
//{
// _wqbAudioClips.Add(wqbClip.name,(AudioClip)wqbClip);
//}
//private void DhbCallback(UnityEngine.Object wqbClip)
//{
// _dhbAudioClips.Add(wqbClip.name,(AudioClip)wqbClip);
//}
/// <summary>
/// 播放语音
/// </summary>
/// <param name="secondProcessName">第二工序名字对应语音名字</param>
/// <param name="index">1代表是提示语音2代表说明语音</param>
public void StartSpeak(string secondProcessName, int index)
{
AudioClip clip = null;
if (GameRoot.Instance._CurType == EnumCtrl.Type.WQB)
{
string wqbfile = secondProcessName + index;
for (int i = 0; i < _wqbAudioClips.Count; i++)
{
if (_wqbAudioClips[i].name.Equals(wqbfile))
{
clip = _wqbAudioClips[i];
}
}
}
else
{
string dhbfile = secondProcessName + index;
for (int i = 0; i < _dhbAudioClips.Count; i++)
{
if (_dhbAudioClips[i].name.Equals(dhbfile))
{
clip = _dhbAudioClips[i];
}
}
}
_curAudSrc.clip = clip;
_curAudSrc.Play();
}
/// <summary>
/// 关闭语音
/// </summary>
public void StopSpaek()
{
_curAudSrc.Stop();
}
//private IEnumerator ReadAudioDataWeb(string filePath)
//{
// using (UnityWebRequest request = UnityWebRequestMultimedia.GetAudioClip(filePath, AudioType.MPEG))
// {
// yield return request.SendWebRequest();
// AudioClip clip = DownloadHandlerAudioClip.GetContent(request);
// clip.name = Path.GetFileNameWithoutExtension(filePath);
// _curAudSrc.clip = clip;
// _curAudSrc.Play();
// }
// yield return null;
//}
}
}