Тут зависит от реализации, но расскажу в общем:
У нас есть методы:
1) FindObjectsOfType(Type), находит все объекты на сцене с такими Типом, забивать нужно это в Massive[Type]
2) GameObject.FindGameObjectsWithTag(tag) и GameObject.GetComponents(Type)
Что мы в итоге имеем, первый метод найдет вообще все Audio Source на сцене, второй делаем так:
если на сцене висят просто ГО заточенные под звук, то даем им нужный tag, например SoundFX, далее так:
Используется csharp
using System.Collections.Generic;
using UnityEngine;
class GetSoundFX : MonoBehaviour
{
public string tag; // Тэг
GameObject[] soundGO;// Массив всех ГО с таким тэгом
AudioSource[] aSources; // Все СаундСорсы со всех ГО из soundGO
int valueComponents; // Переменная используется два раза: в первый для подсчета всех элементов, во второй раз для учета сколько уже прогнали элементов
void Awake()
{
valueComponents = 0;
soundGO = GameObject.FindGameObjectsWithTag(tag); //Набиваем массив
//Считаем сколько у нас всего компонентов, чтобы иницилизировать массив
foreach (GameObject GO in soundGO)
{
AudioSource[] tempComponents = GO.GetComponents<AudioSource>();
valueComponents += tempComponents.Length;
}
aSources = new AudioSource[valueComponents]; //Иницилизируем массив
valueComponents = 0; // Обнуляем
//Закидываем все ссылки в массив aSources
foreach (GameObject GO in soundGO)
{
AudioSource[] tempComponents = GO.GetComponents<AudioSource>();
for (int i = 0; i < tempComponents.Length; i++)
{
aSources[valueComponents] = tempComponents[i];
valueComponents++;
}
}
Debug.Log("soundGO: " + soundGO.Length + " aSources: " + aSources.Length);
}
}
Тонкость здесь такая, ГО с тегом определяет какая у нас группа звуков, т.е все звуковые компоненты на данном ГО с данным тегом будут считаться отнесенной к этой группе.
Если надо чтобы на одном ГО висели разные СаундСорсы то придется писать костыли, в виде отдельного класса, в который через инспектор нужно будет закидывать нужные компоненты.
Но проще просто делать ГО по группам, то есть на ГО с одним тэгом висят звуковые эффекты, на другом ГО с другим тегом висят звуки окружения и так далее. Можно несколько ГО с одним тегом, с них со всех соберутся СаундСорсы.
Скрипт рабочий, прогонял у себя на машине.