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;
}
}
}
05-24
2199

11-01
1906
