C# 加载MP3';并将其分配给游戏对象阵列的成员

C# 加载MP3';并将其分配给游戏对象阵列的成员,c#,audio,unity3d,C#,Audio,Unity3d,我试图从Resources文件夹加载一组MP3文件,然后将每个MP3文件分配给GameObject的音频剪辑值 此游戏对象列表(称为“注释”)已排序,MP3文件已手动排序(其名称按数字顺序排列) 下面是我的尝试,我删除了排序方法SortNotes()以节省空间(它工作得非常好,不是问题) //注释数组 公共游戏对象[]NotesArray; 音频剪辑[]拾取MP3; //用于初始化 无效开始(){ //抓取并排序注释数组 NotesArray=GameObject.FindGameObjects

我试图从Resources文件夹加载一组MP3文件,然后将每个MP3文件分配给GameObject的音频剪辑值

此游戏对象列表(称为“注释”)已排序,MP3文件已手动排序(其名称按数字顺序排列)

下面是我的尝试,我删除了排序方法SortNotes()以节省空间(它工作得非常好,不是问题)

//注释数组
公共游戏对象[]NotesArray;
音频剪辑[]拾取MP3;
//用于初始化
无效开始(){
//抓取并排序注释数组
NotesArray=GameObject.FindGameObjectsWithTag(“Note”);
SortNotes();
//抓取一个mp3文件列表
PickupMP3=Resources.LoadAll(..\\Level 4\\Level 4拾取曲目)作为音频剪辑[];
}
//将每个mp3文件分配给备忘
无效转让票据(){
for(int i=0;i
我得到了大量的NullReferenceException:对象引用未设置为对象错误的实例。它们似乎来源于这一行:note.audio.clip=pickupMP3s[i];但我不知道是什么


对象已经连接了音频源。

NotesRay和PickupMP3的长度是否相同?我会在for循环中做一个断点,看看异常何时发生。发生这种情况时,请检查是否超出PickupMP3阵列的索引范围

另一个错误可能是您的note.audio对象未实例化,因此当您尝试设置其clip属性时,它会抛出错误。通过设置断点来完成调试器将让您知道哪个对象为null。从上面的代码我不确定,但我想你有一个note对象,它有一个音频对象作为它的属性之一,它有一个clip属性。您没有显示任何显示note.audio是否正在实例化(甚至是note)的代码,因此很难判断。确保您正在实例化所有这些内容。

问题是PickupMP3作业的类型转换。应该是:

pickupMP3s = Resources.LoadAll<AudioClip>("Level4/Level4_Pickup_Tracks"); 
而不是

note.audio.clip - pickupMP3s[i];

是的,长度是相同的,并且将始终相同。请检查以确保您的笔记对象和其中的音频对象已实例化。设置一个断点,哪个对象抛出null异常(你可以知道哪个是null)。哦,我刚刚修复了它。实际上,问题是pickupMP3s赋值的类型转换。它应该是pickupMP3=Resources.LoadAll(“Level4/Level4_Pickup_Tracks”);另外,麻烦的线路应该是NotesArray[i].audio.clip=pickupMP3s[i];而不是note.audio.clipNo问题。我们都在一起(编程社区)。
NotesArray[i].audio.clip = pickupMP3s[i]; 
note.audio.clip - pickupMP3s[i];