반응형
이 글은 Vivox버전 16을 기준으로 작성되었습니다
저번 글에서는 Vivox초기화와 로그인을 하는 것까지 알아보았습니다
이번 글에서는 Vivox를 사용하여 음성 채팅을 구현해 보겠습니다
반응형
우선 Vivox음성채널에 접속시켜주어야 합니다
using System;
using System.Threading.Tasks;
using Unity.Services.Authentication;
using Unity.Services.Core;
using Unity.Services.Vivox;
using UnityEngine;
public class VivoxController : MonoBehaviour
{
public event Action OnLoginEndEvent;
public static VivoxController Instance { get; private set; }
private void Awake()
{
DontDestroyOnLoad(gameObject);
Instance = this;
}
private async void Start()
{
await UnityServices.InitializeAsync();
await AuthenticationService.Instance.SignInAnonymouslyAsync();
await VivoxService.Instance.InitializeAsync();
await LoginAsync();
OnLoginEndEvent?.Invoke();
}
private async Task LoginAsync()
{
LoginOptions options = new LoginOptions();
options.DisplayName = Guid.NewGuid().ToString();
await VivoxService.Instance.LoginAsync(options);
}
public async void JoinVoiceChannel(string channelName)
{
//음성채팅 채널에 접속
await VivoxService.Instance.JoinGroupChannelAsync(channelName, ChatCapability.AudioOnly);
}
}
실질적인 로직은 1줄로 끝날정도로 아주 간단합니다 "Vivox채널을 생성하지 않았냐?"라고 물어보실 수도 있는데 Vivox는 해당하는 채널이름의 채널이 없다면 자동으로 채널을 생성하여 줍니다
테스트를 위하여 Init씬과 Game씬을 추가로 생성하고 몇몇 스크립트를 새로 작성하였습니다
using UnityEngine;
using UnityEngine.SceneManagement;
public class SceneChanger : MonoBehaviour
{
private void Start()
{
VivoxController.Instance.OnLoginEndEvent += HandleLoginEnd;
}
//초기화가 끝난 후 씬 전환
private void HandleLoginEnd()
{
SceneManager.LoadScene("Game");
}
}
using UnityEngine;
public class GameSceneController : MonoBehaviour
{
[SerializeField] private string channelName;
private void Awake()
{
VivoxController.Instance.JoinVoiceChannel(channelName);
}
}
이 상태로 빌드를 하고 에디터와 빌드본을 실행하여 테스트해 본다면 음성 채팅이 잘 작동하는 것을 확인하실 수 있습니다
이다음 글에서는 Vivox를 이용하여 3D위치 음성 채팅을 구현하는 것을 알아보겠습니다
반응형
'유니티 > Vivox' 카테고리의 다른 글
[Unity]Vivox - 4. 3D 위치 음성 채팅 구현 (0) | 2024.02.07 |
---|---|
[Unity]Vivox - 2.초기화와 로그인 (2) | 2024.02.07 |
[Unity] Vivox - 1. 사용 준비 (0) | 2024.02.07 |