Unity AudioSource 从StreamingAssets文件夹加载音频播放

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_39097425/article/details/109216242

插眼: 2020/10/22   使用UnityWebRequestMultimedia新版Api

有问题请评论区插眼

至于为啥插眼更新,我觉得自己写的每行代码都是过去自己觉得ok的,而随着时间的流逝,在使用的过程中发现某些地方可能这样子会好那么一点点,有时候一点点就够了

 第一种 unityWebRequest

形式一:有效

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


[RequireComponent(typeof(AudioSource))]
public class AudioPlayFromSSTest : MonoBehaviour
{
    private AudioSource audioSource;
 
    /// <summary>
    /// 背景音乐路径
    /// </summary>
    public string sBGMusicPath = Application.streamingAssetsPath + "/Sounds/wBGAudio01.wav";
 
    private void Start()
    {
        // 获取Au
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Unity加载StreamingAssets文件夹里的多个音频文件,你可以使用`Directory.GetFiles`方法获取StreamingAssets文件夹下的所有音频文件路径,然后逐个加载它们。下面是一个示例代码: ```csharp using UnityEngine; using System.IO; public class AudioLoader : MonoBehaviour { private AudioSource audioSource; public string audioFolderPath; // StreamingAssets文件夹下的音频文件夹路径 private void Start() { audioSource = GetComponent<AudioSource>(); string streamingAssetsPath = Application.streamingAssetsPath; string audioFolderFullPath = Path.Combine(streamingAssetsPath, audioFolderPath); LoadAudioFromFolder(audioFolderFullPath); } private void LoadAudioFromFolder(string folderPath) { string[] audioFiles = Directory.GetFiles(folderPath, "*.mp3"); foreach (string audioFile in audioFiles) { string audioFilePath = "file://" + audioFile; StartCoroutine(LoadAudioClipFromFile(audioFilePath)); } } private IEnumerator LoadAudioClipFromFile(string filePath) { using (UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(filePath, AudioType.MPEG)) { yield return www.SendWebRequest(); if (www.result != UnityWebRequest.Result.Success) { Debug.LogError("Failed to load audio: " + www.error); } else { AudioClip audioClip = DownloadHandlerAudioClip.GetContent(www); audioSource.clip = audioClip; audioSource.Play(); // 等待音频播放完成 yield return new WaitForSeconds(audioClip.length); } } } } ``` 这段代码首先获取一个`AudioSource`组件,然后使用`Application.streamingAssetsPath`获取StreamingAssets文件夹的路径。接着,使用`Path.Combine`方法将音频文件夹路径和StreamingAssets路径结合起来获取完整的音频文件夹路径。然后,使用`Directory.GetFiles`方法获取该文件夹下所有以`.mp3`为扩展名的音频文件路径。在加载每个音频文件时,我们使用`UnityWebRequest`从文件路径加载音频文件,并使用`DownloadHandlerAudioClip.GetContent`获取`AudioClip`。最后,使用`AudioSource.Play`方法播放音频文件,并使用`yield return new WaitForSeconds(audioClip.length)`等待音频播放完成。 请将`audioFolderPath`替换为你实际的StreamingAssets文件夹下的音频文件夹路径。确保音频文件夹位于StreamingAssets文件夹中,并且音频文件的扩展名为`.mp3`。也可以根据实际情况调整加载音频的方法(例如使用其他方式加载StreamingAssets中的文件)并进行适当的错误处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值