PUN2용 Voice
개념
PUN2용 Voice 레이어 로직은 원래 Photon Voice 1 또는 PUNVoice에서 상속되었습니다.
Voice 클라이언트 상태는 PUN의 클라이언트 상태와 자동으로 동기화할 수 있습니다.
주목해야 할 유즈 케이스는 각 플레이어는 오디오가 3D 위치에 있는 네트워크에서 인스턴스화된 PUN 프리팹(캐릭터 또는 아바타)이 있다는 것입니다.
단일 보이스 스트림에는 각 엔드 포인트에 한 쌍의 구성 요소(레코더 및 스피커)가 있습니다.
PUN을 사용할 경우 Photon View ID를 통해 쌍이 링크됩니다.
주요 구성요소
PhotonVoiceNetwork
PhotonVoiceNetwork는 VoiceConnection를 확장했으며 PUN 관련 기능들을 추가되었습니다.
기본 SpeakerFactory는 오버라이드 되었으며 PUN과 보이스 클라이언트의 상태가 동기화되기를 원하는 양을 수정할 수 있습니다.
또한 PUN과 보이스는 선택적으로 PhotonServerSettings의 동일한 AppSettings 공유할 수 있습니다.
기본 SpeakerFactory
새로운 팩토리는 사용자 정의 데이터 개체로 교환된 Photon View ID를 사용하여 음성 스트림 정보에 적합한 스피커를 찾습니다.
자동 연결과 참여
PUN이 룸에 참여하는 경우, 보이스 클라이언트는 해당하는 보이스 룸에 연결하고 참여할 수 있습니다.
자동 나가기와 연결해제
PUN이 룸을 나가게 되면, 보이스 클라이언트는 자동적으로 연결 해제할 수 있습니다.
PhotonVoiceView
PhotonVoiceView는 네트워크로 연결된 PUN 프리팩의 레코더 및 스피커 설정을 담당하는 컴포넌트입니다.
제안되는 작업흐름
씬 설정 (PhotonVoiceNetwork)
- 씬에 PhotonVoiceNetwork를 추가합니다.
- PUN의 PhotonServerSettings에서 AppSettings설정을 사용하거나 분리하는 것을 결정합니다:
a. "Use PUN Settings" 을 선택한 경우: go to PUN의 PhotonServerSettings으로 이동하여 필요시 Voice 정보로 갱신합니다.
b. "Use PUN Settings"을 선택하지 않은 경우: 동일한 컴포넌트내에서 설정을 갱신합니다. - 선택적으로
PhotonVoiceNetwork.AutoConnectAndJoin
을true
로 설정합니다. - 선택적으로
PhotonVoiceNetwork.AutoLeaveAndDisconnect
를true
로 설정합니다. - 선택적으로 씬에 레코더를 추가하고, 속성을 갱신하여
PhotonVoiceNetwork.PrimaryRecorder
에 할당합니다. - 선택적으로 (6.a.) 및 (6.b.) 스피커 인스턴스는 수신되는 보이스 스트림에 대하여 찾을 수 없을 때 생성해야 합니다:
a. 선택적으로PhotonVoiceNetwork.AutoCreateSpeakerIfNotFound
를 true로 설정합니다.
b. 선택적으로 스피커 프리팹(스피커 컴포넌트를 가지고 있는 프리팹)을 추가하고PhotonVoiceNetwork.SpeakerPrefab
에 지정합니다.
프리팹 설정 (PhotonVoiceView)
- PhotonView가 연결된 PUN 프리팹의 GameObject에 PhotonView를 추가합니다.
- 레코더 설정 (2.a. 또는 2.b. 또는 2.c.):
2.a.PhotonVoiceView.UsePrimaryRecorder
를true
설정합니다(PhotonVoiceNetwork.PrimaryRecorder
설정 필요, "씬 설정" 단계 5 참조).
2.b.PhotonVoiceView.AutoCreateRecorderIfNotFound
를true
로 설정.- 레코더가 생성되면
photonVoiceView.RecorderInUse.TransmitEnabled
를true
로 설정하여 수동으로 전송을 시작할 필요가 있습니다. - 내가 듣기 위해서는 수동으로
photonVoiceView.RecorderInUse.DebugEchoMode
를true
로 설정하여 전송을 수동으로 시작할 필요가 있습니다(로컬 스피커가 연결되어야 합니다.단계 3.b. 참고).
- 레코더가 생성되면
2.c. 프리팹에 레코더를 추가, 속성을 갱신하여 PhotonVoiceView.RecorderInUse
에 붙입니다.
- 선택적으로 Recorder.TransmitEnabled
를 사용하여 준비가되면 즉시 전송하도록 합니다.
- 선택적으로 Recorder.DebugEchoMode
를 사용하여 내가 들을 수 있도록 합니다 (로컬 스피커는 연결되어 있어야 합니다, 단계 3.b. 참고).
3. 스피커 설정:
3.a. 선택적으로 프리팹에 스피커를 추가하고 PhotonVoiceView.SpeakerInUse
에 할당합니다..
3.b. 선택적으로 PhotonVoiceView.SetupDebugSpeaker
를 사용합니다 (Recorder.DebugEchoMode
를 사용한다면 필요합니다).