unity 用UnityWebRequest获取StreamingAssets文件夹下多个wav并放入一个audioclip数组
时间: 2023-12-10 16:39:10 浏览: 188
可以通过以下步骤实现:
1. 使用UnityWebRequest获取StreamingAssets文件夹下的所有wav文件路径。
```csharp
string path = Application.streamingAssetsPath + "/audio/";
UnityWebRequest request = UnityWebRequest.Get(path);
request.SendWebRequest();
while (!request.isDone) { }
string[] filePaths = request.downloadHandler.text.Split('\n');
```
2. 创建一个新的AudioClip数组并设置其长度。
```csharp
AudioClip[] audioClips = new AudioClip[filePaths.Length];
```
3. 遍历文件路径数组,使用UnityWebRequest获取每个文件的二进制数据,并使用AudioClip.CreateFromMemory方法创建对应的AudioClip对象。
```csharp
for (int i = 0; i < filePaths.Length; i++)
{
if (!string.IsNullOrEmpty(filePaths[i]))
{
string filePath = "file://" + Application.streamingAssetsPath + "/audio/" + filePaths[i];
UnityWebRequest audioRequest = UnityWebRequestMultimedia.GetAudioClip(filePath, AudioType.WAV);
audioRequest.SendWebRequest();
while (!audioRequest.isDone) { }
AudioClip audioClip = DownloadHandlerAudioClip.GetContent(audioRequest);
audioClips[i] = audioClip;
}
}
```
注意:获取StreamingAssets文件夹下的文件需要使用"file://"协议。同时,由于UnityWebRequest是异步操作,需要在获取完所有文件数据后再处理AudioClip数组。
阅读全文