Version: 2020.1
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);

Parameters

nameName of clip.
lengthSamplesNumber of sample frames.
channelsNumber of channels per frame.
frequencyЧастота семпла. (Read Only)
_3DAudio clip is played back in 3D.
streamTrue if clip is streamed, that is if the pcmreadercallback generates data on the fly.
pcmreadercallbackThis callback is invoked to generate a block of sample data. Non-streamed clips call this only once at creation time while streamed clips call this continuously.
pcmsetpositioncallbackThis callback is invoked whenever the clip loops or changes playback position.

Returns

AudioClip A reference to the created AudioClip.

Description

Создаёт пользовательский AudioClip с данным именем, длинной (в сэмплах), каналами и частотой.

Если поток true, Unity по требованию будет читать данные небольшими порциями. Если false, все образцы будут считываться во время создания.

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; } }