#c# #unity3d #audio
#c# #unity3d #Аудио
Вопрос:
Я создаю версию minesweeper в Unity с C # для проекта, в котором разные звуки воспроизводятся одним кадром в зависимости от того, какое число находится внутри поля, которое вы нажимаете (рядом с каждой бомбой, например, «1» будет играть мажорный аккорд, «2» — минорный аккорд и т.д.)
Часть моего кода, относящаяся к этому:
// Different Textures
public Sprite[] emptyTextures;
public Sprite mineTexture;
public AudioSource myFx;
public AudioClip[] audioFiles;
// Load another texture
public void loadTexture(int adjacentCount)
{
if (mine)
GetComponent<SpriteRenderer>().sprite = mineTexture;
else
GetComponent<SpriteRenderer>().sprite = emptyTextures[adjacentCount];
}
Кажется, я не могу заставить звук работать. Я предполагаю, что это будет что-то вроде этого?
GetComponent<SpriteRenderer>().sprite = emptyTextures[adjacentCount];
GetComponent<AudioSource>().clip = audioFiles[adjacentCount];
Но я просто продолжаю получать ошибки. Я очень новичок в C #, поэтому буду признателен за любую помощь. Спасибо! 🙂
p.s. Я использовал этот учебник для его создания: https://noobtuts.com/unity/2d-minesweeper-game
Редактировать: ошибки:
MissingComponentException: There is no 'AudioSource' attached to the "default" game object, but a script is trying to access it.
Существует источник звука (myFx), но когда я затем удаляю его и добавляю источник звука непосредственно в gameobject, я не получаю ошибок, но звук не воспроизводится.
Комментарии:
1. Можете ли вы отредактировать свой пост с учетом ошибок, которые вы получаете? Также вы присваиваете аудиофайлы общедоступной переменной и добавляете компонент AudioSource в gameobject?
2. Добавил их, но, похоже, Мартин решил мою проблему! В любом случае спасибо, что посмотрели 🙂
Ответ №1:
Вы на правильном пути — вы указываете клип, с которым хотите воспроизвести
GetComponent<AudioSource>().clip = audioFiles[adjacentCount];
Единственное, что осталось сделать, это фактически воспроизвести клип, вызвав
GetComponent<AudioSource>().Play();
Комментарии:
1. Боже мой!!!! Я ломал голову в течение 2 часов, пытаясь понять это. Огромное тебе спасибо, Мартин!