Version: 5.4 (switch to 5.5b)
言語English
  • C#
  • JS

Script language

Select your preferred scripting language. All code snippets will be displayed in this language.

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

マニュアルに切り替える

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