Я делаю версию тральщика в 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];
Но я просто продолжаю получать ошибки. Я очень новичок в С#, поэтому буду признателен за любую помощь. Спасибо! :)
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), но когда я затем удаляю его и добавляю источник звука непосредственно в игровой объект, я не получаю ошибок, но звук не воспроизводится.
Добавил их, но оказалось, что Мартин решил мою проблему! Спасибо, что все равно заглянули :)
Вы на правильном пути - вы указываете клип, который хотите воспроизвести
GetComponent<AudioSource>().clip = audioFiles[adjacentCount];
Осталось только воспроизвести клип, вызвав
GetComponent<AudioSource>().Play();
О, Боже мой!!!! Я ломал голову 2 часа, пытаясь понять это. Спасибо большое Мартин!
Можете ли вы отредактировать свой пост с ошибками, которые вы получаете? Также вы назначаете аудиофайлы общедоступной переменной и добавляете компонент AudioSource в игровой объект?