This document is about: VOICE 2
SWITCH TO

Voice - Fusionインテグレーション

Voice - Fusionインテグレーション

このインテグレーションは、Photon Fusionプロジェクト内でPhoton Voiceの使用を簡単にするものです。主なユースケースは、各プレイヤーがスポーンしたネットワークオブジェクト(キャラクター/アバター)の音声を3D空間に配置するような場合です。Fusionでスポーンしたプレイヤーアバターに連動しない別のオブジェクトに、音声ソースを持たせることも可能です。

音声ストリームは、シーン上のNetworkObjectプレハブのインスタンス化と同期して、Voiceルームに作成されます。音声ストリームを生成するのは、ネットワークオブジェクトにアタッチされたRecorderです。音声ストリームを消費するのは、リモートのネットワークオブジェクトにアタッチされたSpeakerです。 NetworkObject.Idは、Recorderに対応する適切なSpeakerを見つけるために使用されます。

インポート方法

使用中のFusion SDKの、Unityバージョン最小要件をご確認ください。現在はUnity 2021.3.xとなっていて、VoiceのFusionインテグレーションには、同バージョン以上が必要です。

Fusion 2.1
Fusion 2.0

Fusion 2.1でVoiceインテグレーションを始める場合は、Fusion Hubから直接インストールできます。

  1. UnityのメニューバーTools/Fusion/Fusion Hubから、Fusion Hubを開きます。

  2. Addonsタブを選択します。

Fusion HubからAddonsタブを選択

  1. VoiceInstallボタンを押します。

  2. インストールしたら、Fusion HubのVoiceタブを開き、表示のステップに従いセットアップを完了してください。

Voiceタブからセットアップを完了

Fusionのインポート

既にFusionをインポート済みなら、この部分はスキップしてください。

  1. こちらからFusionをダウンロード・インポートします。
  2. メニューのFusion > Realtime SettingsからPhoton App Settingsを開きます。
  3. FusionのAppIdを取得して、App Id Fusionに設定してください。

Photon Voiceのインポート

既にPhoton Voiceをインポート済みなら、この部分はスキップしてください。

UnityのPackage ManagerまたはUnity Asset Storeから、Photon Voice 2をインポートします:

  • Photon\PhotonChatのチェックを外します
  • 以下フォルダーのチェックを外します:
    • Photon\PhotonUnityNetworking
    • Photon\PhotonVoice\Code\Pun
    • Photon\PhotonVoice\DemosPhoton\PhotonVoice\Demos\Fusionは例外的にチェックを入れる)

Weaver Settingsの更新

  1. メニューのFusion > Network Project ConfigからNetwork Project Configを開きます。
  2. Configを開きます。
  3. Weaving Settingsを開きます。
  4. Assemblies To Weave+ボタンを押して、リスト項目を1つ追加します。
  5. 新しく作成した項目のドロップダウンからPhotonVoice.Fusionを選択します。
  6. 下部のApplyを押します。

主要コンポーネント

FusionVoiceClient

VoiceConnectionの実装で、接続とFusionとVoiceクライアントの同期を維持します。FusionVoiceClientでは、Fusionでセッションへ参加した後に、Voiceルームへ参加します。Fusionでセッションから退出すると、自動的にVoiceルームを退出し切断します。

Application Settings

  • FusionVoiceClient.UseFusionAppSettingstrueの場合、FusionのPhotonAppSettingsが使用されます。そうしない場合は、App Settingsにこのコンポーネントで使用する値を設定してください。

  • FusionVoiceClient.UseFusionAuthValuestrueの場合、VoiceクライアントはFusionと同じAuthenticationValuesを使用します。そのためには、VoiceアプリケーションとFusionアプリケーションとで同じカスタム認証のダッシュボード設定が必要です。ただし、認証プロバイダーによっては、認証リクエストごとにnonce(ワンタイムシークレット)を発行する必要があることに注意してください。その場合、FusionとPhoton VoiceでAuthenticationValuesを共有することはできず、Voiceクライアントを接続する前にVoiceクライアントのAuthenticationValuesFusionVoiceClient.Client.AuthValues)を手動で設定する必要があります。

ストリーミング

  • FusionVoiceClient.PrimaryRecorderRecorderコンポーネントを持つオブジェクトです。クライアントごとに送信ストリームが1つだけ存在するような場合に役立ちます。

  • FusionVoiceClient.UsePrimaryRecordertrueの場合、PrimaryRecorderオブジェクトのRecorderが自動的に初期化され、ストリーミングに使用されます。このRecorderはネットワークオブジェクトには紐づかないため、VoiceNetworkObjectプレハブを使用している場合はチェックを外してください。

  • FusionVoiceClient.SpeakerPrefab:新しい受信ストリームを検知し、そのストリームに関連するオブジェクト階層にSpeakerが存在しない場合に、スピーカーオブジェクトのインスタンス化に使用するプレハブです。VoiceNetworkObjectプレハブを使用していない場合、またはオブジェクトがSpeakerコンポーネントを持たない場合に設定します。このプレハブはSpeakerコンポーネントを含む必要があります。

VoiceNetworkObject

VoiceNetworkObjectコンポーネントは、RecorderSpeakerのセットアップを担当します。 送信側では、プレハブ階層のRecorderを開始し、見つからなければFusionVoiceClient.PrimaryRecorderを開始します。 受信側では、プレハブ階層のSpeakerを開始し、見つからなければFusionVoiceClient.SpeakerPrefabからインスタンスを生成します。

推奨ワークフロー

シーンのセットアップ

  1. FusionのPhotonAppSettingsからVoice AppIdを設定します。
  2. NetworkRunnerがアタッチされているオブジェクトにFusionVoiceClientを追加します。
  3. Recorderを持つオブジェクトをシーンに追加し、FusionVoiceClient.PrimaryRecorderに割り当てます。
  4. Speakerを持つプレハブを作成し、FusionVoiceClient.SpeakerPrefabに割り当てます。

プレハブのセットアップ

  1. NetworkBehaviourがアタッチされたFusionのプレハブオブジェクトにVoiceNetworkObjectを追加します。
  2. ショートカットメニュー(Fusion -> Rebuild Object Table)から、Fusionがプレハブを認識していることを確認します。

詳細は、FusionのサンプルFusion Impostorサンプルをご覧ください。

Last updated on

Back to top