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

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

Mute Others World Preview

このサンプルでは、他のプレイヤーをミュート(消音)およびミュート解除する方法を解説します。

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 Inspector

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

MuteOthers.cs

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

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

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

Inspectors for changing button text

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

変数


チャレンジ

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

最終更新: