Привет всем!
Экспериментирую со звуком в unity. Возникла ситуация, когда обьект ударяется, нужно воспроизвести звук. Так вот, в чем проблема: звук играется достаточно долго. Не успевает он закончить воспроизводиться, как новое воспроизведение звука прерывает старое. В итоге звук обрывается...
Меня интересует может ли AudioSource воспроизводить несколько звуков?
Как вообще решается данная проблема?
У меня пока одна мысль: нужно каждый раз при воспроизведении создавать обьект с AudioSource, назначить ему звук и все будет хорошо.
Но может это слишком ресурсзатратно? Есть другие варианты?
.PlayOneShot(clip); //опционально можно указать уровень громкости вторым параметром
SlavaLia
> .PlayOneShot(clip); //опционально можно указать уровень громкости вторым параметром
Это мне известно. Мне нужно в один момент времени запустить более 1 аудиоклипа.
Есть вариант сделать несколько AudioSources:
http://answers.unity3d.com/questions/175995/can-i-play-multiple-a… gameobje.html
Вот тут вообщем-то подтверждение моим словам:
http://answers.unity3d.com/questions/977606/how-to-play-multiple-… aneously.html
AudioSource.PlayAudioClipAtPosition
но лучше самому сделать свой вариант
Alerr
> Это мне известно. Мне нужно в один момент времени запустить более 1 аудиоклипа.
Так именно это и может делать функция .PlayOneShot(clip);
Она запускает звучание нового клипа и не останавливает звучание ранее запущенного клипа.
Скорее всего вы путаете её с функций .Play() - вот она то как раз использует аудио соурс в монопольном режиме.
Проверил только что у себя.
Код тестовый прилагается.
Две музыкальные композиции звучат одновременно.
Ч.Я.Д,Н.Т?
using UnityEngine; using System.Collections; public class TestSounds : MonoBehaviour { public AudioSource audio; public AudioClip clip1; public AudioClip clip2; void Update () { if(Input.GetKeyDown(KeyCode.Alpha1)){ audio.PlayOneShot(clip1); } if(Input.GetKeyDown(KeyCode.Alpha2)){ audio.PlayOneShot(clip2); } } }
SlavaLia, спасибо) Да, я спутал ее с Play
Тема в архиве.