name | 剪辑的名称。 |
lengthSamples | 样本帧数。 |
channels | 每帧的通道数。 |
frequency | 剪辑的采样频率。 |
_3D | 音频剪辑以 3D 方式播放。 |
stream | 如果剪辑是流式传输的,即 pcmreadercallback 实时生成数据,则为 true。 |
pcmreadercallback | 此回调被调用以生成一段样本数据。非流式剪辑仅在创建时调用此回调一次,而流式剪辑则持续调用此回调。 |
pcmsetpositioncallback | 每当剪辑循环或更改播放位置时,都会调用此回调。 |
AudioClip 创建的 AudioClip 的引用。
创建一个用户 AudioClip,并使用给定的样本长度、通道数和频率命名。
使用 SetData 设置您自己的音频数据。使用 PCMReaderCallback 和 PCMSetPositionCallback 委托在剪辑读取数据并更改位置时获取回调。如果 stream 为 true,则 Unity 将按需读取小块数据。如果为 false,则所有样本将在创建期间读取。
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { public int position = 0; public int samplerate = 44100; public float frequency = 440;
void Start() { AudioClip myClip = AudioClip.Create("MySinusoid", samplerate * 2, 1, samplerate, true, OnAudioRead, OnAudioSetPosition); AudioSource aud = GetComponent<AudioSource>(); aud.clip = myClip; aud.Play(); }
void OnAudioRead(float[] data) { int count = 0; while (count < data.Length) { data[count] = Mathf.Sin(2 * Mathf.PI * frequency * position / samplerate); position++; count++; } }
void OnAudioSetPosition(int newPosition) { position = newPosition; } }