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

スクリプト言語

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

MonoBehaviour.OnAudioFilterRead(float[], int)

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

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