他のプレイヤーをミュートする

このサンプルでは、他のプレイヤーをミュート(消音)およびミュート解除する方法を解説します。
Mute Others Example World にアクセスして、実際に試してみてください!
サンプルの使用方法
mute-others シーンを開いて、まずUnity Editor上でテストしてください。または、VRChatクライアントでこちらのワールドにアクセスしてください。
このサンプルにはTextMeshProが必要です。プロジェクトにTextMeshProが含まれていない場合は、「Import TMP Essentials」を促すウィンドウが表示されます。インポートを承諾し、完了後にシーンを再度開いてください。
「Mute Players」と書かれたボタンを押すと、インスタンス内の他のプレイヤー全員がミュートされ、ボタンのラベルが「Unmute Players」に変わります。もう一度ボタンを押すと、他のプレイヤーの音声が元に戻り、ラベルも元の「Mute Players」に戻ります。
サンプルのインポート
以下の手順に従って、このサンプルを Unity プロジェクトに追加します。
- Unity エディターのメニューの「VRChat SDK > 🏠 Example Central」から Example Central ウィンドウ を開きます。
- リストの中からこのプレハブを探すか、タイトル(このページのタイトルと同じ)で検索します。
- 「Import」ボタンを押して、Unitypackage をプロジェクトにインポートします。
技術的詳細

「PlayerMuteLogic」GameObjectには、このデモのすべてのロジックを含む単一のU#プログラムが配置されています。
MuteOthers.cs
このプログラムには、シーン内のMuteButtonから _Trigger() 関数が呼び出されるたびに切り替わる _areOtherPlayersMuted というブール値変数があります。
この変数の値を切り替えた後、 OnMuteUpdated() が呼び出されます。これはインスタンス内のすべてのプレイヤーのリストを取得し、それぞれの VoiceDistanceFar を変更することで、実質的にミュートとミュート解除を行います。この値を0に設定すると、他のプレイヤーの声は0メートルで聞こえなくなります(ミュート状態)。
ミュートを解除すると、値は _defaultVoiceDistance (インスペクターで変更しない限りデフォルトは25)に戻され、デフォルトの距離である25メートルまで声が聞こえるようになります。
この関数は、 _buttonLabel として参照されているボタン上のテキストも変更します。

各状態で表示されるメッセージは、インスペクター上で Message Muted および Message Unmuted として簡単に変更できます。
変数
- Button Label - メッセージを変更するためのボタンラベルへの参照です。あらかじめ適切に設定されている必要があります。
- Message Muted - 他のプレイヤーがミュートされている間にボタンに表示されるテキストです。デフォルトは「Unmute Players」です。
- Message Unmuted - 他のプレイヤーがミュート解除されている間にボタンに表示されるテキストです。デフォルトは「Mute Players」です。
- Default Voice Distance - ミュート解除時にすべてのプレイヤーの音声距離として設定される値です。デフォルトは25で、これはプラットフォーム全体のデフォルト値です。
チャレンジ
このプレハブを更新して、特定のプレイヤーのみをミュートするようにできますか?一つのアプローチとして、プレイヤーの位置に基づいて行う方法があります。その足掛かりとして、PlayerJoinZones のサンプルを確認してみてください。これは、プレイヤーがトリガーエリア内にいるかどうかに基づいて、プレイヤーのコレクションを作成するものです。
最終更新: