Mute Others

この例では、他のプレイヤーをミュートしたりミュート解除したりする方法を紹介します。
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をプロジェクトにインポートします。
技術解説

デモの全ロジックを含む単一のU#プログラムが、「PlayerMuteLogic」GameObjectに配置されています。
MuteOthers.cs
このプログラムには _areOtherPlayersMuted というブール変数が含まれており、シーン内のMuteButtonから _Trigger() 関数が呼び出されるたびに切り替わります。
この変数の値を切り替えると 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 の例を確認してみてください。
最終更新: