VRChat 非公式日本語ドキュメント

Mute Others

Mute Others ワールドプレビュー

この例では、他のプレイヤーをミュートしたりミュート解除したりする方法を紹介します。

Mute Others Example Worldにアクセスして、実際に試してみてください!

サンプルの使用方法

まずはmute-othersシーンを開いてUnity Editor上で試すか、VRChatクライアントでこちらのワールドにアクセスしてください。 このサンプルにはTextMeshProが必要です。プロジェクトにTextMeshProが含まれていない場合は、「Import TMP Essentials」を提案するウィンドウが表示されます。その提案を承諾し、インポートが完了した後にシーンを再度開いてください。

「Mute Players」と書かれたボタンを押すと、同じインスタンス内にいる他のすべてのプレイヤーがミュートされ、ボタンのラベルが「Unmute Players」に変わります。もう一度ボタンを押すと、他のプレイヤーの音声が元に戻り、ラベルも「Mute Players」に戻ります。

サンプルのインポート

以下の手順に従って、このサンプルをUnityプロジェクトに追加してください。

  1. Unityエディタのメニューから「VRChat SDK > 🏠 Example Central」を選択し、Example Centralウィンドウを開きます。
  2. リストの中からこのプレハブを探すか、このページと同じタイトルで検索してください。
  3. 「Import」ボタンを押して、Unitypackageをプロジェクトにインポートします。

技術解説

Mute Others インスペクター

デモの全ロジックを含む単一のU#プログラムが、「PlayerMuteLogic」GameObjectに配置されています。

MuteOthers.cs

このプログラムには _areOtherPlayersMuted というブール変数が含まれており、シーン内のMuteButtonから _Trigger() 関数が呼び出されるたびに切り替わります。

この変数の値を切り替えると OnMuteUpdated() が呼び出されます。このメソッドはインスタンス内の全プレイヤーのリストを取得し、それぞれの VoiceDistanceFar を変更することで、実質的なミュートとミュート解除を行います。この値を0に設定すると、他のプレイヤーの声は0メートル先で聞こえなくなる(無音になる)ことを意味します。

ミュートを解除すると、値は _defaultVoiceDistance に戻ります。この値はインスペクターで変更しない限り25であるため、デフォルトの距離である25メートル先まで声が聞こえるようになります。 この関数は、_buttonLabel として参照されているボタン上のテキストも変更します。

Inspectors for changing button text

各状態で表示するメッセージは、インスペクターで Message Muted および Message Unmuted として簡単に変更できます。

変数

  • Button Label - メッセージを変更するためのボタンのラベルへの参照。適切に設定されている必要があります。
  • Message Muted - 他のプレイヤーがミュートされている間にボタンに表示されるテキスト。デフォルトは「Unmute Players」です。
  • Message Unmuted - 他のプレイヤーがミュート解除されている間にボタンに表示されるテキスト。デフォルトは「Mute Players」です。
  • Default Voice Distance - ミュート解除された際にすべてのプレイヤーの音声距離に設定される値。デフォルトは25で、これはプラットフォーム全体でのデフォルト値です。

課題

このプレハブを更新して、特定のプレイヤーのみをミュートできるようにしてみましょう。一つのアプローチとして、プレイヤーの現在地に基づいてミュートを行う方法があります。その足掛かりとして、トリガーエリア内にいるかどうかに基づいてプレイヤーのコレクションを作成する PlayerJoinZones の例を確認してみてください。

最終更新: