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

AudioClip.PCMReaderCallback

Declaration

public delegate void PCMReaderCallback(float[] data);

Параметры

Параметр Описание
данные Массив float, содержащий данные, считываемые из клипа.

Описание

Unity вызывает этого делегата каждый раз, когда AudioClip читает данные.

AudioClip хранит эти необработанные данные в массиве с плавающими значениями от -1 до 1. Для не потоковых клипов, Unity вызывает этот делегат при создании аудиоклипа. Если клип длиннее максимального количества семплов callback, Unity вызывает делегат несколько раз, чтобы движок мог получить все семплы клипа. Струмовые клипы вызывают этот делегат непрерывно, и принимают различные семплы с различными интервалами. Когда вы используете AudioClip.Create для создания клипа, вы можете использовать этот делегат в качестве параметра и определить, что происходит, когда аудио читает данные.

Дополнительные ресурсы: AudioClip.Create.

// This script creates an audio clip, sets its data and creates a sinusoid graph when it reads the data and changes positions. 
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(); }

// When Unity calls PCMReaderCallback, create a graph from the audio clip’s data. void OnAudioRead(float[] data) { int count = 0; while (count < data.Length) { data[count] = Mathf.Sin(2 * Mathf.PI * frequency * position / samplerate); position++; count++; } } //When Unity calls PCMSetPositionCallback, update the position variable. void OnAudioSetPosition(int newPosition) { position = newPosition; } }