在剪辑中设置样本数据。
样本应为 -1.0f 到 1.0f 之间的浮点值。超出这些限制会导致伪影和未定义的行为。样本数由 ReadOnlySpan 或浮点数组的长度决定。使用 offsetSamples 参数可以写入剪辑中的任意位置。如果从偏移量开始的长度超过了剪辑长度,写入将循环并从剪辑开头写入剩余样本。
对于压缩音频文件,只有当 音频剪辑 导入器中的加载类型设置为加载时解压缩时,才能设置样本数据。
为了获得最佳性能,建议使用 Span 版本,因为它不需要分配托管内存。
using UnityEngine; using Unity.Collections;
public class Example : MonoBehaviour { // Read all the samples from the clip and halve the gain void Start() { AudioSource audioSource = GetComponent<AudioSource>(); var numSamples = audioSource.clip.samples * audioSource.clip.channels; var samples = new NativeArray<float>(numSamples, Allocator.Temp); audioSource.clip.GetData(samples, 0);
for (int i = 0; i < samples.Length; ++i) { samples[i] = samples[i] * 0.5f; }
audioSource.clip.SetData(samples, 0); } }