AudioClip.Create
Declaration
public static AudioClip Create(string name, int lengthSamples, int channels, int frequency, bool stream);public static AudioClip Create(string name, int lengthSamples, int channels, int frequency, bool stream, AudioClip.PCMReaderCallback pcmreadercallback);public static AudioClip Create(string name, int lengthSamples, int channels, int frequency, bool stream, AudioClip.PCMReaderCallback pcmreadercallback, AudioClip.PCMSetPositionCallback pcmsetpositioncallback);Obsolete public static AudioClip Create(string name, int lengthSamples, int channels, int frequency, bool _3D, bool stream);Obsolete public static AudioClip Create(string name, int lengthSamples, int channels, int frequency, bool _3D, bool stream, AudioClip.PCMReaderCallback pcmreadercallback);Obsolete public static AudioClip Create(string name, int lengthSamples, int channels, int frequency, bool _3D, bool stream, AudioClip.PCMReaderCallback pcmreadercallback, AudioClip.PCMSetPositionCallback pcmsetpositioncallback);Параметры
| Параметр | Описание |
|---|---|
| имя | Название клипа. |
| lengthSamples | Число кадров выборки. |
| каналы | Количество каналов в кадре. |
| частота | Частота дискретизации клипа. |
| _3D | Аудиоклип воспроизводится в 3D. |
| поток | True, если клип является потоковым, то есть, если pcmreadercallback генерирует данные в режиме реального времени. |
| pcmreadercallback | Этот обратный вызов используется для создания блока образцовых данных. Не потоковые клипы вызывают его только один раз во время создания, в то время как потоковые клипы вызывают его непрерывно. |
| pcmsetpositioncallback | Этот обратный вызов вызывается каждый раз, когда клип повторяется или меняет позицию воспроизведения. |
Возвращаемое значение
AudioClip Ссылка на созданный AudioClip.
Описание
Создает пользователя AudioClip с именем и заданной длиной в семплах, каналах и частоте.
Задайте свои собственные аудиоданные с помощью AudioClip.SetData. Используйте делегаты PCMReaderCallback и PCMSetPositionCallback для получения обратного вызова, когда клип читает данные и меняет позицию. Если stream является true, Unity читает небольшие кусочки данных по требованию. Если это false, Unity читает все семплы во время создания клипа.
Примечание: Unity ожидает, что вы передадите массив с действительными аудиоданными (семплы с плавающей точкой между -1.0 и 1.0) PCMReaderCallback. Если аудиоданные отсутствуют, вы должны заполнить массив нулями. В противном случае это приведет к неожиданному шуму или другим нежелательным звукам во время воспроизведения.
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(); }
void OnAudioRead(float[] data) { int count = 0; while (count < data.Length) { data[count] = Mathf.Sin(2 * Mathf.PI * frequency * position / samplerate); position++; count++; } }
void OnAudioSetPosition(int newPosition) { position = newPosition; } }