Version: 2017.2
public void PlayScheduled (double time);

参数

time 声音应该开始播放的时间,该时间为 AudioSettings.dspTime 引用的绝对时间轴上的时间(以秒为单位)。

描述

在 AudioSettings.dspTime 读取的绝对时间轴上的特定时间播放 clip

这是在音乐播放器中拼接 AudioClip 的首选方法,因为它与帧率无关,并且为音频系统提供了足够的时间来准备声音的播放(从打开和缓冲需要大量时间(流式传输)的媒体获取声音),而不导致突发的 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 处的示例演示了播放两个音频剪辑并且不必在剪辑切换时进行弹出或点击操作的方法:设置两个附加剪辑的 AudioSource,然后使用 AudioSource 对每个剪辑进行排队。

另请参阅:SetScheduledStartTime