유니티 Lobby를 커스터마이징 하는 방법

Relay서비스와 Lobby를 구현하다 보면 문뜩 Lobby의 요소를 꾸미고 싶을 때가 생깁니다!

예를 들면, 위와 같이 로비를 생성했을 때 방의 이름, 방의 지역, 방의 숫자와 같이 말이죠!

 

또는, 방테두리 색깔, 방의 Private 정보 등등을 커스터마이징 할 수 있습니다!!


코드

public async Task<Lobby> CreateLobby(string requesterUasId, string lobbyName, int maxPlayers, bool isPrivate, Dictionary<string, PlayerDataObject> hostUserData, string limitToRegion)
{
    var options = LobbyRegionToCreatOptions(limitToRegion);
    CreateLobbyOptions createOptions = new CreateLobbyOptions
    {
        IsPrivate = isPrivate,
        Player = new Player(id: requesterUasId, data: hostUserData),
        Data = options
    };

    return await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, createOptions);
}

개발자가 CreateLobby함수를 통해 LobbyService.Instance.CreateAsync 함수를 호출하는 과정입니다!

LobbyService.Instance.CreateAsync 함수에는 로비이름과 최대 플레이어 수, 그리고 방의 옵션을 설정할 수 있습니다!

저는 여기서 방의 옵션에는 총 3가지를 사용하였습니다!

  • 1. IsPrivate
  • 2. Player정보
  • 3. Data

여기서 저희가 커스터마이징 할 수 있는 옵션은 Data이며, Data는 Dictinary<string, DataObejct>  구조로 이루어져 있습니다!

LobbyRegionToCreatOptions

함수같은 경우 방의 Region을 커스터마이징 하기 위해 만든 옵션이므로 직접 제작한 함수입니다!

Dictionary<string, DataObject> LobbyRegionToCreatOptions(string limitToRegion)
{
    Dictionary<string, DataObject> options = new Dictionary<string, DataObject>();
    options.Add("LobbyRegion", new DataObject(DataObject.VisibilityOptions.Public,  limitToRegion));

    return options;            
}