Unity: несколько экземпляров, использующих один AudioSource
Я строю простую 2D-игру, в основном клон Plants vs. Zombies, для учебных целей.
Я могу добавить в свою игру разных защитников, и я хочу, чтобы один из моих защитников воспроизводил непрерывный звук, когда он создается в игре.
Таким образом, звук должен быть активным при запуске и зацикливаться, пока защитник не будет убит. Проблема в том, что, если я создам более одного из этих защитников в игре, все они будут играть один и тот же звук, который складывается.
Я чувствую, что перепробовал все, и это сводится к этой проблеме. Если я поставлю AudioSource на самого защитника, звуки будут складываться. Если я помещу AudioSource в другой GameObject, то звук не остановится, когда защитник будет уничтожен.
Что мне не хватает? Я пытался создать статический AudioSource для класса защитника, но это тоже не сработало. Я попытался связать это со здоровьем защитника, переключив логическое значение, как только у защитника будет здоровье 0 (= мертв), но ни одно из моих решений не сработало.
Это моя последняя попытка сценария на Защитнике.
private static AudioSource audioSource;
// Use this for initialization
void Start () {
audioSource = gameObject.GetComponent<AudioSource>();
if (!audioSource.isPlaying){
audioSource.Play();
}
}
1 ответ
Как сказал @Programmer, вам нужно остановить Audio Source следующим образом:
audioSource.Stop()
Сейчас когда. Насколько я понимаю, вы хотите, чтобы уникальный источник звука воспроизводился, пока один из защитников еще жив. Итак, что вы можете сделать, это создать счетчик в том необоронном GameObject, о котором вы упоминали. Также публичный метод для изменения этого счетчика из сценариев защитников следующим образом:
- Каждый раз, когда создается новый защитник (например, в методе запуска), вы добавляете +1 к счетчику.
- Каждый раз, когда миньон уничтожается, вы добавляете -1.
Затем вы проверяете:
Если счетчик> 1, то вы добавляете:
if (! audioSource.isPlaying) {audioSource.Play (); }
Если счетчик == 0, вы останавливаете его.
Если у вас есть несколько типов миньонов с разными звуками, вы можете использовать разные счетчики и разные методы для вызова из скрипта миньонов, чтобы запускать и воспроизводить разные звуки.