2using System.Collections;
3using System.Collections.Generic;
5using NaughtyAttributes;
17 internal string filePath =
"";
18 private FileStream fs;
20 private WaveStream fileReader;
21 private WaveOutEvent waveOut;
29 handler?.Invoke(
this, e);
34 return filePath ==
"" ?
"" : filePath.Substring(filePath.LastIndexOf(
'\\') + 1);
58 private void loadtest()
60 filePath =
@"C:\Users\UnityTeam\Downloads\file_example_MP3_5MG.mp3";
73 if (filePath ==
"")
return;
75 fileReader?.Dispose();
77 fs = File.OpenRead(filePath);
78 if (filePath.ToLower().EndsWith(
"mp3"))
80 fileReader =
new Mp3FileReader(fs);
84 fileReader =
new WaveFileReader(fs);
86 waveOut =
new WaveOutEvent();
87 waveOut.Init(fileReader);
89 waveOut.PlaybackStopped += WaveOut_PlaybackStopped;
92 StartCoroutine(LoadAndPlay());
98 IEnumerator LoadAndPlay()
100 if (gameObject.GetComponent<AudioSource>())
102 gameObject.GetComponent<AudioSource>().Play();
105 var www = UnityWebRequestMultimedia.GetAudioClip(filePath, AudioType.UNKNOWN);
108 yield
return www.SendWebRequest();
110 if (!www.isHttpError && !www.isNetworkError)
112 var song = gameObject.AddComponent<AudioSource>();
113 song.clip = ((DownloadHandlerAudioClip) www.downloadHandler).audioClip;
118 Debug.Log(www.error);
125 private void WaveOut_PlaybackStopped(
object sender, StoppedEventArgs e)
139 waveOut.PlaybackStopped -= WaveOut_PlaybackStopped;
147 fileReader?.Dispose();
153 if (gameObject.GetComponent<AudioSource>())
155 gameObject.GetComponent<AudioSource>().Stop();
160 private void OnDestroy()
165 fileReader?.Dispose();
UnityEngine.UI.Button Button
void SetFilePath(string path)
EventHandler SoundStopped
virtual void OnSoundStopped(EventArgs e)