Version: 2022.3
言語: 日本語
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);

パラメーター

name クリップの名前
lengthSamples サンプルフレームの数
channels フレームごとのチャンネルの数
frequency サンプル周波数
_3D オーディオクリップが 3D で再生されます。
stream pcmreadercallback がオンザフライでデータを生成する場合は、True のクリップがストリーミングされます。
pcmreadercallback このコールバックはサンプルデータのブロックを生成するために実行されます。ストリーミングでないクリップは作成時に一度だけこの呼び出しを行いますが、ストリーミングされるクリップは継続的に呼び出しを行います。
pcmsetpositioncallback このコールバックは、クリップがループしたり再生位置を変更したりするときに実行されます。

戻り値

AudioClip 作成された AudioClip への参照

説明

名前、与えられたサンプルの長さ、チャンネル、周波数からユーザーが AudioClip を作成します。

SetData でユーザー自身のオーディオデータを設定します。 PCMReaderCallback や PCMSetPositionCallback デリゲートを使って、クリップがデータを読み取って位置を変更するたびにコールバックを取得します。ストリームが 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; } }