版本: Unity 6 (6000.0)
语言英语
  • C#

AudioClip.SetData

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们会阅读用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

由于某种原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public bool SetData(ReadOnlySpan<float> data, int offsetSamples);

声明

public bool SetData(float[] data, int offsetSamples);

描述

在剪辑中设置样本数据。

样本应为 -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); } }