Unity,外部加载音频的脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using System.IO;

public class ChangeBGM : MonoBehaviour
{
    public AudioSource BGM;
    public string folderName = "AudioFiles";  // 音频文件夹名
    public string[] audioFileExtensions = { ".mp3", ".ogg", ".wav" };  // 支持的音频文件格式

    void Start()
    {
        StartCoroutine(LoadRandomAudioFromFolder(folderName));
    }

    IEnumerator LoadRandomAudioFromFolder(string folderName)
    {
        string folderPath = Path.Combine("D:\\", folderName);

        if (Directory.Exists(folderPath))
        {
            // 获取文件夹中所有的音频文件
            string[] audioFiles = Directory.GetFiles(folderPath);

            // 筛选出支持的音频文件
            audioFiles = System.Array.FindAll(audioFiles, file => {
                foreach (var ext in audioFileExtensions)
                {
                    if (file.EndsWith(ext)) return true;
                }
                return false;
            });

            if (audioFiles.Length > 0)
            {
                // 随机选择一个音频文件
                string selectedFile = audioFiles[Random.Range(0, audioFiles.Length)];

                // 创建 UnityWebRequest 来加载音频文件
                UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip("file://" + selectedFile, GetAudioTypeFromExtension(selectedFile));
                yield return www.SendWebRequest();

                if (www.result == UnityWebRequest.Result.Success)
                {
                    AudioClip audioClip = DownloadHandlerAudioClip.GetContent(www);  // 获取加载的音频文件                    
                    BGM.clip = audioClip;  // 设置音频剪辑
                    BGM.Play();  // 播放音频
                    BGM.loop = true;
                }
                else
                {
                    Debug.LogError("Failed to load audio: " + www.error);
                }
            }
            else
            {
                Debug.LogError("No audio files found in folder: " + folderPath);
            }
        }
        else
        {
            Debug.LogError("Folder not found: " + folderPath);
        }
    }
    void DefaultBGM()
    {

    }

    // 根据文件扩展名选择正确的 AudioType
    AudioType GetAudioTypeFromExtension(string filePath)
    {
        string extension = Path.GetExtension(filePath).ToLower();
        switch (extension)
        {
            case ".mp3":
                return AudioType.MPEG;
            case ".ogg":
                return AudioType.OGGVORBIS;
            case ".wav":
                return AudioType.WAV;
            default:
                return AudioType.UNKNOWN;
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值