Voice 소개
시작하기
Photon Voice 2는 다음과 같은 기능을 제공하는 Photon Voice의 후속 제품입니다:
- 향상된 Unity 컴포넌트로 API 개선.
- PUN2와 호환
- 유연성:지금부터 PUN2에서 분리되었고, Photon Voice 2는 (항상 유니티 내에서)Photon Realtime, Photon Bolt, Photon Chat 또는 심지어 독립형에서 사용 가능합니다.
- DSP 기반의 새로운 WebRTC
- 새롭게 업데이트된 데모들.
Photon Voice 2는 유니티 에셋 스토어 여기에서 다운로드하여 임포트 할 수 있습니다.
필요한 최소한의 유니티 버전은 5.6.6f2 입니다.
지원되는 플랫폼
- Windows
- UWP
- macOS
- Android (64-bit 지원 여기 참고)
- iOS
- PlayStation 4 (여기에서 다운로드할 수 있는 특별 애드온 필요. 콘솔에 대한 액세스에 대해서는여기를 참고하세요.)
- Nintendo Switch (여기에서 다운로드할 수 있는 특별 애드온 필요. 콘솔에 대한 액세스에 대해서는여기를 참고하세요.)
- MagicLeap (Lumin OS, 여기에서 다운로드할수 있는 특별 애드온 필요. Magic Leap에 대해서는 여기를 참고하세요.)
주요 구성요소
VoiceConnection
Voice 클라이언트가 Photon 서버에 접속할 수 있도록 하기 위해 VoiceConnection 컴포넌트 인스턴스가 씬에서 필요합니다.
음성 전송이 룸 내에서만 가능하므로, VoiceConnection은 매치메이킹과 클라이언트가 룸에 참여했는지 확인하는데 사용됩니다.
Recorder(레코더)
레코더는 매우 중요한 구성 요소이므로 전용 페이지가 여기에 있습니다.
Speaker(스피커)
스피커 구성 요소는 수신되는 오디오 스트림을 플레이하는 역할을 합니다.
Unity의 AudioSource 구성 요소를 사용합니다.
구성 요소는 음성 스트림의 컨텍스트 외부에서 또는 생성 이벤트를 통해 들어오는 스트림의 정보를 얻기 전에 자체로는 그다지 의미가 없습니다.
이 이벤트와 이 이벤트에 포함된 데이터는 로컬 스피커 구성 요소를 원격 음성 스트림에 '링크'를 하는 데 중요합니다.
다음 섹션에서 스피커를 어떻게 사용해야 하는지에 대해 설명합니다.
SpeakerFactory
새 원격 음성 스트림 정보가 수신될 때마다 SpeakerFactory 메소드가 호출됩니다.
SpeakerFactory의 역할은 수신되는 원격 음성 스트림(레코더 구성 요소 인스턴스를 통해 전송됨)을 로컬 스피커 구성 요소 인스턴스와 연결하거나 바인딩 하는 것입니다.
원격 음성 스트림과 로컬 스피커 또는 원격 레코더와 로컬 스피커 간의 일대일 관계를 지원합니다.
기본적으로 단일 스피커 구성 요소 인스턴스를 사용하여 여러 수신 오디오 스트림을 혼합하고 재생할 수 없습니다.
또한 기본적으로 여러 스피커 구성 요소 인스턴스를 사용하여 들어오는 단일 오디오 스트림을 재생할 수 없습니다.
또한, 기본적으로 복수개의 스피커 컴포넌트 인스턴스를 사용하여 단일 입력 오디오 스트림을 플레이할 수 없습니다.
팩토리에서는 해당 원격 음성 스트림에서 수신된 오디오 프레임을 재생하는 데 사용할 스피커 구성 요소를 반환해야 합니다.
새 스피커 구성 요소를 만들거나 이전 구성 요소를 다시 사용하거나 null을 반환하여 동일한 원격 음성 스트림에서 향후 수신되는 모든 오디오 프레임 재생을 건너뛸 수 있습니다.
SpeakerFactory 메소드로 전달된 파라미터는 오디오 스트림의 원천 또는 소스를 식별하는 데 도움을 줍니다.
원격 레코더 구성 요소에서 시작되는 수신 오디오 스트림에서 수신되는 오디오 프레임을 재생하기 위해 (또는 필요한 경우 새 스피커를 생성하는) 가장 적합한 후보 스피커 구성 요소를 찾는 데 이 코드를 사용해야 합니다.
그 SpeakerFactory 메소드는 3개의 파라미터를 받아들이고 동일한 게임 오브젝트에 붙여진 AudioSource 컴포넌트를 이용하여 입력 오디오를 플레이하는 스피커 컴포넌트를 리턴합니다.
SpeakerFactory 메소드에서 받는 3개의 파라미터는 다음과 같습니다:
playerId
: 오디오 스트림이 시작되는 플레이어의 액터 번호.voiceId
: 동일한playerId
로 부터 오는 오디오 스트림의 숫자.userData
: 오디오 스트림으로부터 전달되는 레코드 컴포넌트내에 있는 사용자정의 객체.
기본 SpeakerFactory
명시적으로 SpeakerFactory를 설정하지 않은 경우 기본 VoiceConnection.SimpleSpeakerFactory
이 사용됩니다.
기본 VoiceConnection.SimpleSpeakerFactory
는 원격 음성 스트림당 로컬로 인스턴스화된 스피커가 있음을 보장합니다.
SpeakerPrefab을 설정하면 기본 회전 위치에서 계층의 루트 객체로 prefab이 인스턴스화됩니다.
그렇지 않으면 새 GameObject가 생성됩니다.
스피커 구성 요소가 연결된 게임 개체 이름이 "Speaker for Player {0} Voice #{1}"
로 변경되고 원격 음성 스트림이 제거되면 삭제됩니다.
Voice를 사용하는 방법 (PUN 없이)
- 씬에 VoiceConnection 컴포넌트를 추가합니다
VoiceConnection.Settings
에서 AppSettings을 설정합니다- 씬에 레코더를 추가하고, 속성을 변경하고
VoiceConnection.PrimaryRecorder
를 할당합니다. - 원격 음성 스트림을 가진 스피커 컴포넌트 연결 방식을 결정합니다:
4.a. 선택적으로, SpeakerFactory 메소드를 구현하고 코드로VoiceConnection.SpeakerFactory
를 할당합니다.
4.b. 기본 SpeakerFactory를 사용하는 경우, 선택적으로 스피커 프리팹(스피커 컴포넌트를 가진 프리팹)을 추가하고VoiceConnection.SpeakerPrefab
에 할당합니다. - 룸에 참여합니다. 이렇게 하려면 Photon Realtime의 매치메이킹 오퍼레이션을 이용합니다(예제의 "ConnectAndJoin.cs" 유틸리티 스크립트 참조).
- 룸에서
Recorder.TransmitEnabled = true
를 설정하여 전송을 시작합니다. - 선택적으로 전송 레코더의
Recorder.DebugEchoMode
값을 켜 놓고 내가 말하는 것을 들어봅니다.
PUN 제거 방법
PUN 없이 Photon Voice를 사용하고 싶은 경우, 다음 단계에 따라 PUN을 프로젝트 내에 보관하거나 제거할 수 있습니다:
이것에 대한 에디터 단축키는 다음과 같습니다: "Window" -> "Photon Voice" -> "Remove PUN".
선택적으로 다음 단계를 통해 수작업으로 수행할 수 있습니다:
- "Demos\DemoVoicePUN" 폴더를 삭제합니다
- "Photon\PhotonVoice\Code\PUN" 폴더를 삭제합니다
- "Photon\PhotonUnityNetworking" 폴더를 삭제합니다
- 이 작업을 하면 당연하게 수행되어야 하지만, "Project Settings" -> "Player" > "Other Settings" > "Scripting Define Symbols",
PHOTON_UNITY_NETWORKING
, allPUN_2_X_OR_NEWER
그리고PUN_2_OR_NEWER
이 제거되었는지 확인하세요.
언제든지 에셋 스토어에서 Photon Voice 2를 가져와 파일을 다시 추가할 수 있습니다.
Photon Chat 제거하는 방법
Photon Chat 없이 Photon Voice를 사용하려면 프로젝트 내에 Photon Chat을 보관하거나 간단히 그 폴더를 삭제하면 됩니다.
이를 수행하기 위한 단축키는 다음과 같습니다: "Window" -> "Photon Voice" -> "Remove Photon Chat".
선택적으로, "Photon\PhotonChat" 폴더를 수작업으로 삭제하여 이를 수행할 수 있습니다.
언제든지 에셋 스토어에서 Photon Voice 2를 가져와 파일을 다시 추가할 수 있습니다.
Back to top