Unity 6.3
0 онлайн 30 гостей 3 в системе
Вход

AudioClip.SetData

Declaration

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

Параметры

Параметр Описание
данные Линейный буфер семплов для записи в буфер аудиоклипа.
offsetSamples Смещение от начала аудиоклипа, в котором начнется запись образцовых данных. offsetSamples не учитывает аудиоканалы, а вместо этого использует кадры. Не умножайте количество аудиоканалов на индекс.

Возвращаемое значение

логическое Возвращает, были ли все семплы успешно записаны в аудиоклип. Это может возвращать false, если offsetSamples не является действительным смещением в существующем AudioClip, или если данные пустые.

Описание

Заполняет аудиоклип образцами данных из массива или Span. Перезаписывает существующие данные, если это необходимо.

Это полезно, если вы хотите использовать процедурное аудио и изменять аудио данные во время выполнения. Используйте только образцы с плавающими значениями в диапазоне от -1.0f до 1.0f. Не превышайте эти ограничения, так как это может привести к артефактам и неопределенному поведению.

Длина ReadOnlySpan или матрица с плавающей точкой определяет число выборок.

Используйте offsetSamples параметр для записи в определенную позицию в клипе. Если длина от смещения больше, чем длина клипа, запись будет обворачиваться и записывать оставшиеся семплы с начала клипа.

Для сжатых аудио файлов, вы можете установить образцы данных только если вы установите Тип нагрузки до Декомпрессия при нагрузке в 2000 году Аудиоклип импортер.

Для наилучшей производительности используйте версию 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); } }