Я пытаюсь сохранить аудиофайл в папке (в разделе "Ресурсы"), куда я могу поместить любой подходящий аудиофайл в указанную папку и прочитать многочисленные триггеры в моей программе из этой единственной точки (вот почему мой AudioClip ниже является общедоступным статическим, поэтому я могу ссылаться на него). В настоящее время один и тот же аудиофайл работает во всей программе, но для изменения файла требуется ручное переопределение в Инспекторе, к которому мой конечный клиент не будет иметь доступа, и, кроме того, это утомительно из-за множества существующих ориентиров.
Вот что у меня есть на данный момент:
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 пуста. Об этом говорится в отладке, но если я добавлю вызов отладки для BGMSource.clip.name, он полностью выдаст ошибку с исключением NullReferenceException в этой отладке.
Отладка для строки formatted1 (путь и имя файла), она действительно представляет правильный файл с именем Test.mp3 ("C: / ... Resources / Audio / BGM \ Test"), отформатированный без ".mp3", как было рекомендовано с другого сайта. Я пробовал с расширением .mp3, вроде не имело значения, все равно не играл. Я также пробовал с файлом .wav и .ogg, результат тот же (примечание: все файлы были в порядке, если я прикреплял как общедоступный AudioClip вручную, так как в этом случае также воспроизводился бы AudioSource, как написано выше, но, как я и показал, мы не хочу этого для этого случая). Да, все тестовые аудиофайлы находились в каталоге / Resources / Audio / BGM.
Другой сайт сказал что-то о добавлении в начало файла [RequireComponent (typeof (AudioClip))] или [RequireComponent (typeof (AudioSource))], но это ничего не дало.
Наконец, эта программа в конечном итоге будет передана группе, у которой не будет доступа к источнику, поэтому они ДОЛЖНЫ иметь возможность заменять аудиофайл, отбрасывая любой .mp3 в Resources / Audio / BGM для автоматического воспроизведения.
Любая помощь приветствуется, спасибо!