言語: 日本語
  • C#
  • JS
  • Boo

スクリプト言語

お好みのスクリプト言語を選択すると、サンプルコードがその言語で表示されます。

MonoBehaviour.OnAudioFilterRead(float[], int)

Switch to Manual

Parameters

data オーディオデータを持つ float配列
channels デリゲートに渡されたオーディオデータのチャネルの数を格納する int

Description

OnAudioFilterReadが実装されている場合、UnityはDSPチェーンにカスタムフィルタを挿入します。

フィルターはインスペクターに表示されているMonoBehaviourスクリプトと同じ順番で挿入されます。 OnAudioFilterReadは毎回呼ばれているオーディオのチャンクをフィルターに通すルートです。(これはサンプルレートやプラットフォームに応じて毎回 ~20msで頻繁に発生します。) オーディオデータは-1.0fから1.0fまでのfloat値の配列で、チェーンのフィルター前のオーディオ、またはAudioSourceAudioClipを含みます。これがチェーンの最初のフィルタでオーディオソースがアタッチされていない場合、このフィルタはフィルタリングしたことになります。そうすれば手続き的にオーディオの生成を行い、オーディオクリップのようにフィルターを使用することができます。 OnAudioFilterReadが実装されている場合、VUメーターはサンプルレベルを出力を表示するためにインスペクターに表示されます。フィルターの処理時間も測定され、使用済みのミリ秒は次のVUメーターに表示されます。(ミキサーがオーディオデータを開始した時に、フィルタが多くの時間を費やしている場合、赤色に変わります) また、OnAudioFilterRead関数内から他のUnity関数を呼び出すことは許可されていません(渓谷が表示されます)ので、メインスレッド(すなわちオーディオスレッド)から異なるスレッドが呼び出されていることに注意してください。 See Also: Audio Filters.

	// This custom filter controls the gain by filtering the samples by multiplying each sample with a <i>gain</i> parameter.  

	public var gain : float;

	function OnAudioFilterRead(var data:float[], var channels:int) {
		for (var i = 0; i < data.Length; ++i)
			data[i] = data[i] * gain;			
	}