Задать вопрос
@1Beginners

В Unity корутина не может вовремя запустить сама себя после void Start(). Как заставить корутину запускать себя моментально?

скрипт
[SerializeField] private int playedXTimes;
    [SerializeField] private AudioClip music;
    [SerializeField] private AudioSource audioSource;

    private void Start()
    {
        StartCoroutine(Enumsdsdsdsd());
    }

    public IEnumerator Enumsdsdsdsd()
    {
        for (int i = 0; i < playedXTimes; i++)
        {
            audioSource.clip = music;
            audioSource.PlayOneShot(music);
            yield return new WaitForSeconds(0);
        }
    }

Здесь music должна запускаться playedXTimes раз, а так как yelid return равняется нулю, все запуски должны случиться примерно в одно время. Странность заключается в том, что музыка сначала запустится один раз, подождёт пол секунды, а потом выполнит все остальные запуски синхронно.
  • Вопрос задан
  • 58 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@DrRen7
yield return new WaitForSeconds(0); это по сути апдейт
Задержка в пол секунды это от старта до первого апдейта
public IEnumerator Enumsdsdsdsd()
{
yield return new WaitForSeconds(0); // если будет тут то все запустится с первым апдейтом
for (int i = 0; i < playedXTimes; i++)
{
audioSource.clip = music;     // это скорее всего не надо
audioSource.PlayOneShot(music);

}
yield return new WaitForSeconds(0); //если тут то все запустится при старте
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы