Version: 2017.3
public void PlayScheduled (double time);

Parameters

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

Description

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

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

using UnityEngine;
using System.Collections;

[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() { int i = 0; while (i < 2) { GameObject child = new GameObject("Player"); child.transform.parent = gameObject.transform; audioSources[i] = child.AddComponent<AudioSource>(); i++; } nextEventTime = AudioSettings.dspTime + 2.0F; running = true; } void Update() { if (!running) return; double time = AudioSettings.dspTime; if (time + 1.0F > nextEventTime) { audioSources[flip].clip = clips[flip]; audioSources[flip].PlayScheduled(nextEventTime); Debug.Log("Scheduled source " + flip + " to start at time " + nextEventTime); nextEventTime += 60.0F / bpm * numBeatsPerSegment; flip = 1 - flip; } } }

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

See Also: SetScheduledStartTime.