name | 剪辑的名称。 |
lengthSamples | 样本帧数。 |
channels | 每帧的声道数。 |
frequency | 剪辑的采样频率。 |
_3D | 音频剪辑以 3D 格式播放。 |
stream | 如果剪辑是流式传输的(即 pcmreadercallback 即时生成数据),则为 true。 |
pcmreadercallback | 调用该回调以生成样本数据块。非流式传输剪辑仅在创建时调用该回调一次,而流式传输剪辑将持续调用该回调。 |
pcmsetpositioncallback | 每当剪辑循环或更改播放位置时,就会调用该回调。 |
AudioClip 对创建的 AudioClip 的引用。
使用名称和给定的样本长度、声道和频率创建用户 AudioClip。
使用 SetData 设置您自己的音频数据。使用 PCMReaderCallback 和 PCMSetPositionCallback 委托,每当剪辑读取数据和更改位置时获取一个回调。如果 stream 为 true,Unity 将按需读取小块数据。如果 stream 为 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.Sign(Mathf.Sin(2 * Mathf.PI * frequency * position / samplerate)); position++; count++; } }
void OnAudioSetPosition(int newPosition) { position = newPosition; } }