Unity NetworkLobbyManager 가이드
Unity의 NetworkLobbyManager는 게임의 메인 플레이 씬에 진입하기 전에 거치는 멀티플레이어 로비를 제공하는 특별한 NetworkManager 타입입니다. 이 문서에서는 NetworkLobbyManager의 기능과 설정을 이해하고 활용하는 방법을 설명합니다.
주요 기능
- 최대 플레이어 수 제한: 로비에 들어올 수 있는 최대 인원수 설정
- 자동 시작: 모든 플레이어가 준비되면 게임을 자동으로 시작
- 게임 참여 방지: 진행 중인 게임에 플레이어가 참여하지 못하도록 설정
- 카우치 멀티플레이어 지원: 같은 클라이언트를 사용하는 여러 플레이어의 참여
- 커스터마이즈 가능: 플레이어가 로비 내에서 옵션 선택 가능
플레이어 오브젝트
NetworkLobbyManager는 두 가지 타입의 플레이어 오브젝트를 사용합니다.
- LobbyPlayer 오브젝트
- 각 플레이어에 대해 하나씩 생성됩니다.
- 클라이언트가 연결될 때 생성되며, 연결 해제 시까지 지속됩니다.
NetworkLobbyPlayer컴포넌트를 사용해야 합니다.- GamePlayer 오브젝트
- 게임 씬이 시작될 때 생성됩니다.
- 로비에서 제거되며, 게임 내 커맨드를 처리합니다.
프로퍼티
아래 표는 NetworkLobbyManager의 주요 프로퍼티와 그 기능을 정리한 것입니다.
| 프로퍼티 | 기능 |
|---|---|
| Show Lobby GUI | 로비의 개발자 GUI 컨트롤 표시 |
| Max Players | 로비에 있을 수 있는 최대 플레이어 수 |
| Max Players Per Connection | 각 클라이언트 연결에 추가할 수 있는 최대 플레이어 수 |
| Min Players | 로비에 있어야 하는 최소 플레이어 수 |
| Lobby Player Prefab | 플레이어가 로비에 들어올 때 스타트되는 프리팹 |
| Game Player Prefab | 게임이 시작되면 스타트되는 프리팹 |
| Lobby Scene | 로비에서 사용할 씬 |
| Play Scene | 메인 게임 플레이에 사용할 씬 |
| Network Info | 네트워크 관련 설정에 액세스 |
| Use Web Sockets | WebSocket 연결을 위한 설정 |
| Network Address | 현재 사용 중인 네트워크 주소 |
| Network Port | 현재 사용 중인 네트워크 포트 |
| Server Bind To IP | 특정 IP 주소에 바인딩 여부 |
| Server Bind Address | 바인딩할 IP 주소 설정 |
| Script CRC Check | 클라이언트와 서버의 스크립트 일치 여부 검사 |
예제 코드
다음은 NetworkLobbyManager를 사용하는 예제 코드입니다.
using UnityEngine;
using UnityEngine.Networking;
public class CustomLobbyManager : NetworkLobbyManager
{
public override void OnLobbyClientConnect(NetworkConnection conn)
{
base.OnLobbyClientConnect(conn);
// 추가적인 연결 시 행동을 정의합니다.
}
public override void OnLobbyServerPlayersReady()
{
// 모든 플레이어가 준비되면 게임을 시작합니다.
StartGame();
}
private void StartGame()
{
// 게임 씬으로 전환하는 코드 작성
ServerChangeScene(playScene);
}
}
활용 방안
- 로컬 멀티플레이어 게임: 여러 사용자가 하나의 장치에서 앉아서 게임을 할 수 있도록 설정할 수 있습니다.
- 온라인 멀티플레이어 게임: 다양한 지역의 플레이어가 함께 참여할 수 있도록 배포합니다.
- 게임 대기실: 게임을 시작하기 전에 플레이어가 대기하고 준비할 수 있는 로비 기능을 활용합니다.
NetworkLobbyManager는 간편하게 멀티플레이어 로비를 관리할 수 있는 유용한 도구이며, 다양한 게임에서 손쉽게 적용할 수 있습니다. 추가적으로 공식 Unity 문서를 참조하여 더 많은 정보를 찾아보세요.