Voice - Fusionインテグレーション
Voice - Fusionインテグレーション
このインテグレーションにより、Photon Fusionプロジェクト内でのPhoton Voiceの使用が容易になります。主な使用例としては、各プレイヤーがネットワークで生成されたオブジェクト(キャラクターやアバター)を持っていてオーディオを3D配置する場合です。ただし、Fusionが生成したプレイヤーアバターと連動していない他のオブジェクトにオーディオソースを配置することも可能です。
オーディオストリームは、シーン内のプレハブ"NetworkObject"のインスタンス化と同期して、Voiceルームに作成されます。ネットワークオブジェクトに接続されたRecorderが、オーディオストリームを生成します。このネットワーク・オブジェクトのリモート・コピーに接続されたSpeakerがオーディオストリームを消費します。
NetworkObject.Id`は、Recorderに対応する適切なSpeakerを見つけるために使用されます。
主な概念
FusionVoiceClient
VoiceConnectionの実装で、FusionとVoiceクライアントの接続を維持しステートを同期します。Fusionがセッションに参加すると、VoiceクライアントがVoiceルームに参加します。Fusionがシャットダウンまたは切断すると、Voiceクライアントがルームから退出し、切断されます。
アプリケーションの設定
- FusionVoiceClient.UseFusionAppSettings: trueの場合、Fusionの- PhotonAppSettingsにある- AppSettingsが使用されます。それ以外の場合は、"App Settings"フォールドアウトのFusionVoiceClientコンポーネントに特定の値を設定してください。
- FusionVoiceClient.UseFusionAuthValues: trueの場合、VoiceクライアントはFusionの- PhotonNetwork.AuthValuesと同じ- AuthenticationValuesを使用します。
 これをおこなうためには、VoiceアプリケーションでFusionアプリケーションと同様にカスタム認証ダッシュボードを設定する必要があります。
 ただし、認証プロバイダによっては、認証リクエストごとにnonce(一意のワンタイムシークレット)をクライアントが発行する必要がある点に留意してください。
 このため、FusionとPhoton Voiceで認証値を共有することはできず、Voiceクライアントを接続する前にVoiceクライアントの- AuthenticationValuesを手動で設定する(- FusionVoiceClient.Client.AuthValuesによって)必要があります。
ストリーミング
- FusionVoiceClient.PrimaryRecorder: Recorderコンポーネントのあるオブジェクトで、クライアントごとに1つの発信ストリームのみがある場合に役立ちます。
- FusionVoiceClient.UsePrimaryRecorder: trueの場合、Primary Recorderオブジェクトに付属するRecorderが自動的に初期化され、ストリーミングに使用されます。Recorderはネットワークオブジェクトにバインドされません。- VoiceNetworkObjectを使用している場合にはチェック解除してください。
- FusionVoiceClient.SpeakerPrefab: 新しい受信ストリームを検出した場合に、そのストリームが属するオブジェクトの階層に Speakerが存在しない場合に、スピーカーオブジェクトのインスタンス化に使用するプレハブです。- VoiceNetworkObjectプレハブを使用していない場合や、これらのプレハブにSpeakerコンポーネントがない場合に設定します。Speakerコンポーネントを含む必要があります。
VoiceNetworkObject
VoiceNetworkObjectプレハブに割り当てられ、RecorderとSpeaker のセットアップを担当するコンポーネントです。
ストリーミング側ではプレハブ階層にあるRecorderを起動し、見つからなければ FusionVoiceClient.PrimaryRecorderを起動します。
受信側では、プレハブ階層にあるSpeakerを起動し、見つからなければ FusionVoiceClient.SpeakerPrefabからインスタンスを作成します。
重要なインストラクション
使用するFusion SDKで最低限必要となるUnityのバージョンを確認してください。現在、このバージョンはUnity 2020.3.x で、Voice for Fusionのインテグレーションには少なくとも同じバージョンが必要です。
Fusionをインポート
プロジェクトにすでにFusionがある場合には、この部分をスキップしてください。
- Fusionをこちらからダウンロードおよびインポートします。 
- Fusion > Realtime Settingsメニュー項目を使用し、Photon App Settingsを開きます。
- FusionタイプのAppIDを取得し、Realtime Settingsに設定します:「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\Fusion"以外の"Photon\PhotonVoice\Demos"コンテンツ
 
Weaver Settingsを更新
- メニュー項目のショートカットから"Network Project Config"を開きます:Fusion > Network Project Config
- Configを展開するか、または開きます
- Weaving Settingsを展開するか、または開きます
- Assemblies To Weaveの下にある「+」ボタンで編むべきアセンブリのリストに項目を1つ追加します
- 新規作成した項目で、利用可能なアセンブリのドロップダウンリストから「PhotonVoice.Fusion」を選択します
- 最下部で、Applyをクリックします
推奨されるワークフロー
シーンのセットアップ
- FusionのPhotonAppSettingsで、AppSettingsにVoice AppIdを設定します。
- NetworkRunnerが付属されているオブジェクトに- FusionVoiceClientを追加します。
- Recorderを持つオブジェクトをシーンに追加し、FusionVoiceClient.PrimaryRecorderに割り当てます。
- Speakerのあるプレハブを作成し、FusionVoiceClient.SpeakerPrefabに割り当てます。
プレハブのセットアップ
- NetworkBehaviourが付属されたFusionプレハブオブジェクトに- VoiceNetworkObjectを追加します。
 2. ショートカットメニュー項目から、Fusionがプレハブを認識している点を確認してください:"Fusion" -> "Rebuild Object Table"
詳細な情報はFusionのサンプル または Fusion Impostorのサンプル を参照してください。
Back to top