Unity loads and plays local .wav audio files

Using UnityWebRequestMultimedia

Use UnityWebRequestMultimedia to load the .wav file, convert it to an AudioClip object, and then use AudioSource to play it. Playback uses coroutine functions.
Load the test.wav file on your computer desktop and play it.

Unity editor settings:

Unity editor settings

SpeechManager.cs file code

// SpeechManager.cs文件
using System;
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;

public class SpeechManager : MonoBehaviour
{
    
    
    /// <summary>AudioSource组件</summary>
    private AudioSource audioSource;

    private void Awake()
    {
    
    
        //获取组件
        audioSource = GetComponent<AudioSource>();
    }

    private void Start()
    {
    
    
        //获取桌面上的test.wav文件(你需要把你的.wav文件放在桌面上并命名为test.wav)(在实际环境中一般使用Application.persistentDataPath + "/test.wav")
        string fileName = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "/test.wav";
        //播放
        StartCoroutine(PlayAudio(fileName));
    }

    private IEnumerator PlayAudio(string fileName)
    {
    
    
        //获取.wav文件,并转成AudioClip
        UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip("file:///" + fileName, AudioType.WAV);
        //等待转换完成
        yield return www.SendWebRequest();
        //获取AudioClip
        AudioClip audioClip = DownloadHandlerAudioClip.GetContent(www);
        //设置当前AudioSource组件的AudioClip
        audioSource.clip = audioClip;
        //播放声音
        audioSource.Play();
    }


}

If you need to load audio in other formats, please change the AudioType in UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(“file:///” + fileName, AudioType.WAV); to other formats.

reference

Unity audio Android, [Unity3D] How to read and play Android local wav audio
Application.persistentDataPath www loading pit

Guess you like

Origin blog.csdn.net/qq_44284055/article/details/131993516