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.Sign(Mathf.Sin(2 * Mathf.PI * frequency * position / samplerate)); position++; count++; } } void OnAudioSetPosition(int newPosition) { position = newPosition; } }