我使用此代码打开我的设备资源管理器,选择一个音频文件,并将其作为场景中对象的音频源剪辑插入。
public GameObject evento;
public AudioSource audio;
string path = Application.streamingAssetsPath;
EditorGUIController editorGUIController;
private void Awake() {
editorGUIController = GameObject.FindObjectOfType<EditorGUIController>();
audio = evento.GetComponent<AudioSource>();
}
public void InsertAudio(){
#if UNITY_EDITOR
path = EditorUtility.OpenFilePanel("Overwrite with wav", "", "wav");
audio.clip = LoadMP3(path);
#endif
}
public static AudioClip LoadMP3(string path){
byte[] fileData;
AudioClip clip = null;
if (File.Exists(path)){
int indice = path.LastIndexOf("/");
string audioNameA = path.Substring(indice+1);
string audioName = audioNameA.Substring(0, audioNameA.Length-4);
fileData = File.ReadAllBytes(path);
if(fileData.Length>0) {Debug.Log ("fileData: "+ fileData.ToString());}
float[] samples = new float [fileData.Length/4 +1];
Buffer.BlockCopy(fileData,0,samples,0,fileData.Length);
int channels = 1;
int sampleRate = 48000;
clip = AudioClip.Create(audioName,samples.Length, channels,sampleRate,false);
clip.SetData(samples,0);
}
return clip;
}
不幸的是,当我启动这个方法时,音频以一种非常烦人的噪音开始(可以说是电视的嗡嗡声):
public void playAudio(){
evento.GetComponent<AudioSource>().Play();
}
我很确定问题是在浮点到音频源的转换,但我不知道如何解决它。一些想法?
1条答案
按热度按时间rqqzpn5f1#
我没有足够的声誉,所以我不能评论-_-我有同样的问题,仍然不知道答案,但如果你有一个路径或网址,你可能会对使用
UnityWebRequestMultimedia.GetAudioClip
感兴趣