기술 자료

지원

Vivox Unity SDK

Vivox Unity SDK

C# 스크립트에서 오디오 탭 사용

How to add Audio Taps through C# scripts.
읽는 시간 1분최근 업데이트: 19일 전

이 섹션에서는 에디터 UI가 아닌 스크립트를 통해 오디오 탭을 추가하는 방법을 설명합니다.

Capture Source Tap 및 Channel Audio Tap

C# 스크립트를 통해 씬에 Capture Source Tap과 Channel Audio Tap을 추가할 수 있습니다. 다음은 스크립트를 통해 Vivox Channel Audio Tap 오디오에 에코 효과를 추가하는 방법의 예입니다.
private GameObject _channelAudioGameObject;public void AddChannelAudioEffect(){ // Create the GameObject _channelAudioGameObject = new GameObject("ChannelAudioGameObject"); // Add the Tap to it _channelAudioGameObject.AddComponent<VivoxChannelAudioTap>(); // Also add an echo filter, for example _channelAudioGameObject.AddComponent<AudioEchoFilter>();}
빈 게임 오브젝트를 생성한 다음 모든 오디오에 에코가 적용되도록
VivoxChannelAudioTap
과 Unity에서 제공하는
AudioEchoFilter
를 추가합니다. 다양한 사용 사례에 대한 변경 없이
VivoxCaptureSourceTap
의 예에 사용된 오디오 탭을 전환할 수 있습니다.

Participant Tap 스크립트

Participant Tap은 VivoxParticipant의 클래스
CreateVivoxParticipantTap
메서드를 통해 스크립트에서 쉽게 생성할 수 있습니다.
VivoxService.Instance.ParticipantAddedToChannel
메시지를 구독하면 참가자가 채널에 참여할 때마다 콜백을 받게 됩니다. 그런 다음 제공된 VivoxParticipant 오브젝트에서
CreateVivoxParticipantTap
를 호출하면 Vivox Participant Tap이 포함된 새 참가자에 대한 게임 오브젝트를 생성하여 특정 참가자에 대한 오디오를 수신할 수 있습니다.
다음 예는
ParticipantAddedToChannel
을 구독하고 각각의 새 채널 참가자에 대해 에코 효과를 추가하는 방법을 보여 줍니다.
using Unity.Services.Vivox;using UnityEngine;public class ParticipantHandler : MonoBehaviour{ void Start() { VivoxService.Instance.ParticipantAddedToChannel += AddParticipantEffect; } void AddParticipantEffect(VivoxParticipant participant) { var gameObject = participant.CreateVivoxParticipantTap("MyNewGameObject"); gameObject.AddComponent<AudioEchoFilter>(); }}
위의 예제 스크립트는 생성된 오브젝트를 삭제하지 않습니다. 필요한 경우 특정 채널 멤버에 대한 탭만 생성하는 로직을 추가할 수 있습니다.
CreateVivoxParticipantTap
메서드를 사용하여 생성된 Vivox Participant Tap 게임 오브젝트의 생존 기간은 VivoxParticipant 생존 기간과 연결됩니다. 즉, 참가자가 채널을 나가거나 로컬 플레이어가 로그아웃하면 게임 오브젝트가 자동으로 파괴됩니다. 또한
VivoxParticipant.DestroyVivoxParticipantTap
을 호출하여 모든 Vivox 참가자에 대한 Participant Tap을 명시적으로 파괴할 수도 있습니다.

오디오 탭 상태 모니터링

오디오 탭에는 생성된 오디오 탭의 상태를 모니터링하기 위해 노출된 파라미터 TapId가 있습니다. 탭을 생성한 후 TapId의 값은 0보다 크거나 같아야 합니다. 이는 오류가 없음을 의미합니다. 다음은 탭을 생성하고 TapId에 예상 값이 있는지 확인하는 예입니다.
private GameObject _channelAudioGameObject;public void AddChannelAudioEffect(){ // Create the GameObject _channelAudioGameObject = new GameObject("ChannelAudioGameObject"); // Add the Tap to it var tap = _channelAudioGameObject.AddComponent<VivoxChannelAudioTap>(); if (tap.TapId < 0) { Destroy(_channelAudioGameObject); // Destroy the GameObject, since the status is not valid Debug.LogError($"Failed to create VivoxChannelAudioTap"); return; } else { Debug.Log("There was no error creating VivoxChannelAudioTap"); }}
TapId가 0보다 작은 경우 해당 값은 오류를 해결하는 데 도움이 될 수 있습니다. 가능한 값과 오류 발생 이유는 다음과 같습니다.
  • -1 : 탭이 현재 등록되지 않았습니다. 탭이 인스턴스화되었지만 아직 Vivox에 등록되지 않은 경우 이와 같은 문제가 발생할 수 있습니다. 예를 들어 채널이 자동으로 획득되기를 기다리고 있기 때문입니다.
  • -1010 : 탭이 등록되지 않았습니다.
  • -1011 : 탭에서 잘못된 참가자 이름으로 등록을 시도했습니다.
  • -1012 : 탭에서 잘못된 채널 이름으로 등록을 시도했습니다.
  • -1050 : Vivox Participant Tap에만 적용됩니다. 제공된 참가자 이름에서 참가자 URI를 찾을 수 없습니다.
  • -1051 : 탭에서 Vivox에 등록을 시도했지만 VivoxService가 초기화되지 않았습니다. 오디오 탭을 초기화하기 전에 VivoxService를 초기화해야 합니다.
  • -1052 : 탭에서 잘못된 채널 이름으로 Vivox에 등록을 시도했습니다. 채널 이름을 올바르게 설정해야 합니다.