AudioUtilities: better error reporting

This commit is contained in:
JohnCorby 2022-12-15 21:27:14 -08:00
parent eaf71ca23f
commit 3e22a930c3

View File

@ -81,9 +81,9 @@ namespace NewHorizons.Utility
_loadedAudioClips.Clear(); _loadedAudioClips.Clear();
} }
private static async Task<AudioClip> GetAudioClip(string filePath) private static async Task<AudioClip> GetAudioClip(string path)
{ {
var extension = filePath.Split('.').Last(); var extension = Path.GetExtension(path);
UnityEngine.AudioType audioType; UnityEngine.AudioType audioType;
@ -99,24 +99,24 @@ namespace NewHorizons.Utility
audioType = UnityEngine.AudioType.MPEG; audioType = UnityEngine.AudioType.MPEG;
break; break;
default: default:
Logger.LogError($"Invalid audio file extension ({extension}) must be .wav or .ogg or .mp3"); Logger.LogError($"Couldn't load Audio at {path} : Invalid audio file extension ({extension}) must be .wav or .ogg or .mp3");
return null; return null;
} }
path = $"file:///{path.Replace("+", "%2B")}";
if (audioType == UnityEngine.AudioType.MPEG) if (audioType == UnityEngine.AudioType.MPEG)
{ {
string fileProtocolPath = $"file://{filePath}"; DownloadHandlerAudioClip dh = new DownloadHandlerAudioClip(path, UnityEngine.AudioType.MPEG);
DownloadHandlerAudioClip dh = new DownloadHandlerAudioClip(fileProtocolPath, UnityEngine.AudioType.MPEG);
dh.compressed = true; dh.compressed = true;
using (UnityWebRequest www = new UnityWebRequest(fileProtocolPath, "GET", dh, null)) using (UnityWebRequest www = new UnityWebRequest(path, "GET", dh, null))
{ {
var result = www.SendWebRequest(); var result = www.SendWebRequest();
while (!result.isDone) { await Task.Delay(100); } while (!result.isDone) { await Task.Delay(100); }
if (www.isNetworkError) if (www.isNetworkError || www.isHttpError)
{ {
Debug.Log(www.error); Logger.LogError($"Couldn't load Audio at {path} : {www.error}");
return null; return null;
} }
else else
@ -127,15 +127,15 @@ namespace NewHorizons.Utility
} }
else else
{ {
using (UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(filePath, audioType)) using (UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(path, audioType))
{ {
var result = www.SendWebRequest(); var result = www.SendWebRequest();
while (!result.isDone) { await Task.Delay(100); } while (!result.isDone) { await Task.Delay(100); }
if (www.isNetworkError) if (www.isNetworkError || www.isHttpError)
{ {
Debug.Log(www.error); Logger.LogError($"Couldn't load Audio at {path} : {www.error}");
return null; return null;
} }
else else