ドキュメント

サポート

Vivox Unity SDK

Vivox Unity SDK

C# スクリプトで Audio Tap を使用する

How to add Audio Taps through C# scripts.
読み終わるまでの所要時間 2 分最終更新 23日前

このセクションでは、エディターの UI ではなく、スクリプトを使用して Audio Tap を追加する方法についての情報を示します。

Capture Source Tap と Channel Audio Tap

C# スクリプトを使用して、Capture Source Tap と Channel Audio Tap をシーンに追加できます。以下は、スクリプトを使用して Vivox Channel Audio Tap のオーディオにエコー効果を追加する方法の例です。
private GameObject _channelAudioGameObject;public void AddChannelAudioEffect(){ // Create the GameObject _channelAudioGameObject = new GameObject("ChannelAudioGameObject"); // Add the Tap to it _channelAudioGameObject.AddComponent<VivoxChannelAudioTap>(); // Also add an echo filter, for example _channelAudioGameObject.AddComponent<AudioEchoFilter>();}
空のゲームオブジェクトを作成し、
VivoxChannelAudioTap
と Unity から提供される
AudioEchoFilter
を追加して、すべてのオーディオにエコーを適用します。何も変更を加えなくても、この例で使用されている Audio Tap を
VivoxCaptureSourceTap
に切り替えることでさまざまなユースケースに対応できます。

Participant Tap のスクリプト

Participant Tap は、VivoxParticipant クラスの
CreateVivoxParticipantTap
メソッドを使用してスクリプトで簡単に作成できます。
VivoxService.Instance.ParticipantAddedToChannel
メッセージにサブスクライブすると、参加者がチャンネルに参加するたびにコールバックが届くようになります。次に、提供された VivoxParticipant オブジェクトで
CreateVivoxParticipantTap
を呼び出すと、特定の参加者のオーディオを取得する準備ができた Vivox Participant Tap を含む、新しい参加者用のゲームオブジェクトが作成されます。
以下の例は、
ParticipantAddedToChannel
にサブスクライブし、それぞれの新しいチャンネル参加者に対してエコー効果を追加する方法を示しています。
using Unity.Services.Vivox;using UnityEngine;public class ParticipantHandler : MonoBehaviour{ void Start() { VivoxService.Instance.ParticipantAddedToChannel += AddParticipantEffect; } void AddParticipantEffect(VivoxParticipant participant) { var gameObject = participant.CreateVivoxParticipantTap("MyNewGameObject"); gameObject.AddComponent<AudioEchoFilter>(); }}
上のスクリプト例では、作成されたオブジェクトが削除されていないことに注意してください。必要に応じて、特定のチャンネルメンバーに対してのみタップを作成するロジックを追加できます。
CreateVivoxParticipantTap
メソッドを使用して作成された Vivox Participant Tap ゲームオブジェクトの生存期間は、VivoxParticipant の生存期間に関連付けられます。つまり、参加者がチャンネルから退出するか、ローカルプレイヤーがサインアウトすると、ゲームオブジェクトは自動的に破棄されます。また、
VivoxParticipant.DestroyVivoxParticipantTap
を呼び出して、任意の Vivox 参加者の Participant Tap を明示的に破棄することもできます。

Audio Tap のステータスの監視

Audio Tap には、作成した Audio Tap のステータスを監視するための公開パラメーター TapId があります。Tap の作成後、TapId の値は、エラーがなかったことを意味する 0 以上の値になる必要があります。以下は、Tap を作成し、TapId の値が期待どおりの値であることを確認する例です。
private GameObject _channelAudioGameObject;public void AddChannelAudioEffect(){ // Create the GameObject _channelAudioGameObject = new GameObject("ChannelAudioGameObject"); // Add the Tap to it var tap = _channelAudioGameObject.AddComponent<VivoxChannelAudioTap>(); if (tap.TapId < 0) { Destroy(_channelAudioGameObject); // Destroy the GameObject, since the status is not valid Debug.LogError($"Failed to create VivoxChannelAudioTap"); return; } else { Debug.Log("There was no error creating VivoxChannelAudioTap"); }}
TapId が 0 より小さい値の場合、その値がエラーのトラブルシューティングに役立ちます。表示される可能性がある値と、そのエラー理由を以下に示します。
  • -1 :タップは現在、未登録です。これは、タップがインスタンス化されているが、まだ Vivox に登録されていない場合に発生する可能性があります。例えば、チャンネルが自動的に取得されるのを待機しているためです。
  • -1010 :タップは登録されていません。
  • -1011 :無効な参加者名でタップを登録しようとしました。
  • -1012 :無効なチャンネル名でタップを登録しようとしました。
  • -1050 :Vivox Participant Tap にのみ適用されます。指定された参加者名からは Participant URI が見つかりませんでした。
  • -1051 :タップを Vivox に登録しようとしましたが、VivoxService が初期化されませんでした。Audio Tap を初期化する前に、必ず VivoxService を初期化してください。
  • -1052 :無効なチャンネル名でタップを Vivox に登録しようとしました。チャンネル名を正しく設定してください。