Как воспроизвести звук с помощью GetComponent? (Юнити, С#)

Я делаю версию тральщика в 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), но когда я затем удаляю его и добавляю источник звука непосредственно в игровой объект, я не получаю ошибок, но звук не воспроизводится.

Можете ли вы отредактировать свой пост с ошибками, которые вы получаете? Также вы назначаете аудиофайлы общедоступной переменной и добавляете компонент AudioSource в игровой объект?

ChilliPenguin 21.12.2020 00:26

Добавил их, но оказалось, что Мартин решил мою проблему! Спасибо, что все равно заглянули :)

lelly 21.12.2020 00:40
Почему в Python есть оператор &quot;pass&quot;?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
2
559
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы на правильном пути - вы указываете клип, который хотите воспроизвести

GetComponent<AudioSource>().clip = audioFiles[adjacentCount];

Осталось только воспроизвести клип, вызвав

GetComponent<AudioSource>().Play();

О, Боже мой!!!! Я ломал голову 2 часа, пытаясь понять это. Спасибо большое Мартин!

lelly 21.12.2020 00:40

Другие вопросы по теме