Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Объявление

public void PlayScheduled(double time);

Параметры

time Время в секундах на абсолютной временной шкале, на которую ссылается AudioSettings.dspTime, когда звук должен начать воспроизводиться..

Описание

Воспроизведение клипа в определенное время на абсолютной временной шкале, из которой считывается AudioSettings.dspTime.

Это предпочтительный способ объединения аудиоклипов в музыкальных проигрывателях, поскольку он не зависит от частоты кадров и дает аудиосистеме достаточно времени для подготовки воспроизведения звука к извлечению его с носителя, где открытие и буферизация занимают много времени. время (потоки), не вызывая внезапных пиковых нагрузок на ЦП.

using UnityEngine; using System.Collections; // Базовая демонстрация музыкальной системы, использующей PlayScheduled для предварительной загрузки и точного сэмплирования // сшиваем два аудиоклипа попеременно. Код предполагает, что музыкальные произведения // каждые 16 тактов (4 такта/такт) в темпе 140 ударов в минуту. // Чтобы он сшивал произвольные клипы, просто замените строку // nextEventTime += (60.0 / ударов в минуту) * numBeatsPerSegment // к // nextEventTime += clips[flip].length; [RequireComponent(typeof(AudioSource))] public class ExampleClass : MonoBehaviour { public float bpm = 140.0f; public int numBeatsPerSegment = 16; public AudioClip[] clips = new AudioClip[2]; private double nextEventTime; private int flip = 0; private AudioSource[] audioSources = new AudioSource[2]; private bool running = false; void Start() { for (int i = 0; i < 2; i++) { GameObject child = new GameObject("Player"); child.transform.parent = gameObject.transform; audioSources[i] = child.AddComponent<AudioSource>(); } nextEventTime = AudioSettings.dspTime + 2.0f; running = true; } void Update() { if (!running) { return; } double time = AudioSettings.dspTime; if (time + 1.0f > nextEventTime) { // Сейчас мы прибл. за 1 секунду до времени, в которое должен воспроизводиться звук, // поэтому мы запланируем это сейчас, чтобы у системы было достаточно времени // для подготовки воспроизведения в указанное время. Это может включать в себя открытие // буферизует потоковый файл и, следовательно, должен учитывать любую наихудшую задержку. audioSources[flip].clip = clips[flip]; audioSources[flip].PlayScheduled(nextEventTime); Debug.Log("Scheduled source " + flip + " to start at time " + nextEventTime); // Place the next event 16 beats from here at a rate of 140 beats per minute nextEventTime += 60.0f / bpm * numBeatsPerSegment; // Flip between two audio sources so that the loading process of one does not interfere with the one that's playing out flip = 1 - flip; } } }

Пример AudioSource.SetScheduledEndTime показывает, как можно воспроизвести два аудиоклипа без хлопков и щелчков между ними. Подход состоит в том, чтобы иметь два AudioSource с прикрепленными клипами и ставить каждый клип в очередь, используя свой AudioSource.

Смотрите так же: SetScheduledStartTime.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3