Version: 5.3 (switch to 5.4b)
ЯзыкEnglish
  • C#
  • JS

Язык программирования

Выберите подходящий для вас язык программирования. Все примеры кода будут представлены на выбранном языке.

AudioClip.GetData

Предложить изменения

Успех!

Благодарим вас за то, что вы помогаете нам улучшить качество документации по Unity. Однако, мы не можем принять любой перевод. Мы проверяем каждый предложенный вами вариант перевода и принимаем его только если он соответствует оригиналу.

Закрыть

Ошибка внесения изменений

По определённым причинам предложенный вами перевод не может быть принят. Пожалуйста <a>попробуйте снова</a> через пару минут. И выражаем вам свою благодарность за то, что вы уделяете время, чтобы улучшить документацию по Unity.

Закрыть

Отменить

Руководство
public function GetData(data: float[], offsetSamples: int): bool;
public bool GetData(float[] data, int offsetSamples);

Параметры

Описание

Заполняет массив с образцами данных из клипа.

Образцы - значения типа float в диапазоне от -1.0f до 1.0f. Количество образцов определяется длиной массива с плавающей точкой. Используйте offsetSamples чтобы начать читать из случайной позиции клипа. Если длина считывания от смещения больше чем длина клипа, считывание будет "обернуто вокруг" и прочитаны оставшиеся образцы с начала клипа.

Заметьте, что с компрессией аудио файлов, данные могут быть восстановлены только когда тип "Load Type" установлен в "Decompress On Load" в аудио импортере. Если это не так, то массив будет возвращен с нулями для всех значений.

// Read all the samples from the clip, reducing their gain by half
// as we go along.
function Start () {
	var aud = GetComponent.<AudioSource>();
	var samples = new float[aud.clip.samples * aud.clip.channels];
	aud.clip.GetData(samples, 0);
	
	for (var i = 0; i < samples.Length; ++i)
		samples[i] = samples[i] * 0.5f;
	
	aud.clip.SetData(samples, 0);
}
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { void Start() { AudioSource aud = GetComponent<AudioSource>(); float[] samples = new float[aud.clip.samples * aud.clip.channels]; aud.clip.GetData(samples, 0); int i = 0; while (i < samples.Length) { samples[i] = samples[i] * 0.5F; ++i; } aud.clip.SetData(samples, 0); } }