unity 音频加载并播放

这篇具有很好参考价值的文章主要介绍了unity 音频加载并播放。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

好久没更新博客了,利用这十分钟来写篇服务器语音识别后播放的语音功能

PC端
直接上代码:

namespace Jeremy {
    public class AudioPlayCtrl : MonoBehaviour {
        public static AudioPlayCtrl instance { get; private set; }
        public AudioSource audioSource { get; set; }
        private AudioClip _IntroduceClip;
        private void Awake() {
            instance = this;
            audioSource = transform.GetComponent<AudioSource>();
            if (audioSource == null) {
                audioSource = transform.gameObject.AddComponent<AudioSource>();
            }
        }
        Coroutine AudioPlay;
        public void Play(params string[] urls) {
            if (AudioPlay != null)
                StopCoroutine(AudioPlay);// StopAllCoroutines();
            AudioPlay = StartCoroutine(GetIntroduceAudioClip(audioSource, urls));
        }
        IEnumerator GetIntroduceAudioClip(AudioSource _aud, params string[] url) {
            _aud.Stop();
            //  MPEG:mp3    OGGVORBIS:ogg    WAV:wav
            AudioType audioType = AudioType.MPEG;
            for (int i = 0; i < url.Length; i++) {
                if (url[i] != "") {
                    var uwr = UnityWebRequestMultimedia.GetAudioClip(url[i], audioType);
                    yield return uwr.SendWebRequest();      // 完成加载

                    if (!uwr.isNetworkError && uwr.isDone) {
                        _IntroduceClip = DownloadHandlerAudioClip.GetContent(uwr);

                        _aud.clip = _IntroduceClip;       // 样本完成
                        _aud.Play();

                        if (url.Length > 1 && i < url.Length - 1)
                            yield return new WaitForSeconds(_aud.clip.length + 0.5f);
                    }
                    else
                        Debug.LogError(uwr.error);
                }

            }
        }
    }
}

调用:
unity外部加载音频,Unity3d开发系列,unity,音频,语音识别,c#
效果图:
unity外部加载音频,Unity3d开发系列,unity,音频,语音识别,c#
WebGL文章来源地址https://www.toymoban.com/news/detail-558379.html

语音下载播放做法

        Coroutine AudioPlay;
        AudioClip downloadedClip;
        public AudioSource audioSource { get; set; }
        public void Play(params string[] urls) {
            StopPlaying();
            AudioPlay = StartCoroutine(LoadAudioClips(urls));
        }
        IEnumerator LoadAudioClips(string[] audioUrls) {

            foreach (string url in audioUrls) {
                if (url != null && url != "")
                    using (UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(url, AudioType.MPEG)) {
                        yield return www.SendWebRequest();

                        if (www.result == UnityWebRequest.Result.ConnectionError ||
                            www.result == UnityWebRequest.Result.ProtocolError) {
                            Debug.LogError("Failed to load audio: " + url + ", error: " + www.error);
                        }
                        else {
                            downloadedClip = DownloadHandlerAudioClip.GetContent(www);
                            audioSource.clip = downloadedClip;
                            audioSource.Play();
                            //Debug.Log(url);
                            while (audioSource.isPlaying) {
                                yield return null;
                            }
                        }
                    }
            }
        }
        public void StopPlaying() {
            if (AudioPlay != null) {
                StopCoroutine(AudioPlay);
            }
            audioSource.Stop();
        }

到了这里,关于unity 音频加载并播放的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包