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