Unity 매뉴얼: 멀티플레이어 및 네트워킹
개요
Unity의 네트워킹 기능은 여러 클라이언트 간의 상호작용을 가능하게 합니다. 이 가이드는 NetworkServer 클래스를 사용하여 서버를 설정하고 클라이언트와의 연결을 관리하는 방법을 설명합니다. UNet은 더 이상 지원되지 않으므로, 새로운 솔루션인 게임 오브젝트용 Unity 넷코드를 사용하는 것이 권장됩니다.
NetworkServer 클래스
NetworkServer는 클라이언트의 연결을 관리하는 고수준 API 클래스입니다. 이 클래스를 사용하여 멀티플레이어 게임의 서버 기능을 구현할 수 있습니다.
주요 프로퍼티
| 프로퍼티 이름 | 설명 |
|---|---|
| Active | 서버가 시작되었는지 여부를 확인합니다. |
| Connections | 현재 연결된 모든 클라이언트의 리스트입니다. |
| dontListen | 활성화 시, 서버는 네트워크 포트에서의 연결 대기를 중지합니다. |
| Handlers | 서버에 등록된 메시지 핸들러의 리스트를 제공합니다. |
| hostTopology | 서버에서 사용 중인 호스트 토폴로지 정보입니다. |
| listenPort | 서버가 접속 요청을 대기하는 포트 번호입니다. |
| localClientActive | 로컬 클라이언트가 현재 서버에서 활성화된 경우 true입니다. |
| localConnections | 서버에서 로컬로 연결된 클라이언트의 리스트입니다. |
| maxDelay | 연결된 클라이언트 간의 패킷 전송 최대 지연 시간입니다. |
| networkConnectionClass | 새로운 네트워크 연결을 생성하는 데 사용되는 클래스입니다. |
| numChannels | 설정된 네트워크 채널의 수입니다. |
| objects | 서버에서 생성되고 네트워크에 연결된 오브젝트의 리스트입니다. |
| serverHostId | 서버에서 사용되는 전송 계층 hostId입니다. |
| useWebSockets | 서버가 WebSocket 접속을 시도하도록 설정합니다. |
예제 활용
서버 시작 코드 예제
서버를 시작하는 간단한 코드 예제를 작성해보세요.
using UnityEngine;
using UnityEngine.Networking;
public class MyServer : MonoBehaviour
{
void Start()
{
// 서버 시작
NetworkServer.Listen(7777);
Debug.Log("서버가 시작되었습니다.");
}
}
클라이언트 연결 처리
클라이언트가 연결되었을 때 처리하는 방법에 대한 예제를 제공할 수 있습니다.
public class MyClient : MonoBehaviour
{
void Start()
{
NetworkClient myClient = new NetworkClient();
myClient.Connect("localhost", 7777);
Debug.Log("서버에 연결 중...");
}
}
결론
Unity의 NetworkServer 클래스를 사용하여 멀티플레이어 환경을 구축할 수 있습니다. 위의 예제를 통해 서버와 클라이언트를 구현해보며 다양한 네트워킹 기능을 실험해 보세요. 네트워킹에 대한 더 자세한 정보는 Unity 넷코드 웹사이트를 참조하시기 바랍니다.