Я пытаюсь сделать аудиофайл в папке (в разделе «Ресурсы»), куда я могу поместить любой подходящий аудиофайл в указанную папку и получить в моей программе многочисленные триггеры, считываемые из этой единственной точки (которая является почему мой AudioClip ниже опубликован c stati c, поэтому я могу сослаться на него). В настоящее время один и тот же аудиофайл работает во всей программе, но для его изменения требуется ручное переопределение в Инспекторе, к которому у моего конечного клиента не будет доступа, и, кроме того, он утомителен из-за множества существующих опорных точек.
Вот то, что у меня есть:
public static AudioClip BGM;
public AudioSource BGMSource;
private string formatted1;
void Start()
{
foreach(string file in System.IO.Directory.GetFiles(Application.dataPath+"/Resources/Audio/BGM"))
{
if(file.EndsWith(System.IO.Patch.GetExtension(".mp3")))
{
formatted1 = file.Replace(".mp3",string.Empty);
BGM = Resources.Load<AudioClip>(formatted1);
//BGM = (AudioClip)Resources.Load(formatted1,typeof(AudioClip)); <--same result with this
Debug.Log("found: "+formatted1);
}
}
if(BGM == null)
{
Debug.Log("Yeah, its null");
}
BGMSource.PlayOneShot(BGM, .9f);
if(BGMSource.isPlaying != true)
{
Debug.Log("I'm not playing");
}
}
Так что, это просто не воспроизводится, никаких сообщений об ошибках. Оказывается, BGM является нулевым. Отладка говорит так, но если я добавлю вызов Debug для BGMSource.clip.name, он полностью выдаст ошибку с NullReferenceException для этой отладки.
Отладка для строки formatted1 (Путь к файлу и имя), он представляет правильный файл с именем Test.mp3 («C: / ... Resources / Audio / BGM \ Test»), отформатированный без «.mp3», как было рекомендовано с другого сайта. Я попробовал с включенным расширением .mp3, казалось, не имеет значения, все еще не играл. Я также попытался с файлами .wav и .ogg, тот же результат (примечание: все файлы были в порядке, если я подключил их как publi c AudioClip вручную, так как в этом случае будет воспроизводиться также AudioSource, как написано выше, но, как я говорю, с, мы не хотим этого в этом случае). Да, все тестовые аудиофайлы были в каталоге / Resources / Audio / BGM.
Другой сайт что-то сказал о добавлении в начало файла [RequireComponent (typeof (AudioClip))] или [RequireComponent (typeof (AudioSource))]], но это ничего не сделало.
Наконец, эта программа в конечном итоге будет передана группе, которая не будет иметь доступа к источнику, поэтому они ДОЛЖНЫ иметь возможность поменять аудио-файл, сбросив любой .mp3 в разделе Ресурсы / Аудио / BGM для автоматического воспроизведения.
Любая помощь Добро пожаловать, спасибо!