Unity 매뉴얼: NetworkClient
개요
NetworkClient는 Unity에서 클라이언트와 서버 간의 네트워크 연결을 관리하는 API 클래스입니다. 이 클래스는 클라이언트와 서버 간 메시지를 송수신하고, 스폰된 네트워크 게임 오브젝트를 관리하는 데 유용합니다. 또한 원격 프로시저 호출 메시지 및 네트워크 이벤트를 라우팅하는 기능도 제공합니다.
중요 사항: UNet은 더 이상 지원되지 않으며, Unity의 새로운 멀티플레이어 및 네트워킹 솔루션인 '게임 오브젝트용 넷코드'를 사용하는 것이 권장됩니다. 더 많은 정보는 공식 웹사이트에서 확인할 수 있습니다.
프로퍼티
| 프로퍼티 | 기능 |
|---|---|
| serverIP | 클라이언트가 연결된 서버의 IP 주소입니다. |
| serverPort | 클라이언트가 연결된 서버의 포트입니다. |
| connection | NetworkClient 인스턴스에서 사용 중인 NetworkConnection 게임 오브젝트입니다. |
| handlers | 등록된 메시지 핸들러 함수의 집합입니다. |
| numChannels | 설정된 NetworkTransport QoS 채널 수입니다. |
| isConnected | 클라이언트가 서버에 연결된 경우 true입니다. |
| allClients | 활성 네트워크 클라이언트의 리스트입니다 (정적). |
| active | 활성 네트워크 클라이언트가 있는 경우 true입니다 (정적). |
활용 및 응용 예제
기본 사용법
NetworkClient 클래스를 사용하여 네트워크 서버에 연결하고, 데이터를 송수신하는 기본적인 예제입니다.
void Start() {
NetworkClient client = new NetworkClient();
client.Connect(serverIP, serverPort);
}
메시지 핸들러 등록
서버로부터 받은 메시지를 처리하기 위해 메시지 핸들러를 등록하는 방법입니다.
void RegisterHandlers(NetworkClient client) {
client.RegisterHandler(MyMessageType, OnMyMessageReceived);
}
void OnMyMessageReceived(NetworkMessage netMsg) {
// 메시지 처리 로직
}
클라이언트 연결 상태 확인
클라이언트가 서버에 연결되어 있는지 확인하는 방법입니다.
if (client.isConnected) {
Debug.Log("서버에 연결되었습니다.");
} else {
Debug.Log("서버에 연결되지 않았습니다.");
}
결론
NetworkClient를 사용하면 간편하게 클라이언트-서버 간의 네트워크 통신을 구현할 수 있습니다. 다양한 메시지 핸들러와 기능을 활용하여 멀티플레이어 게임의 네트워크 로직을 구축할 수 있습니다. 새로운 Unity의 멀티플레이어 솔루션을 참고하여 최신 개발 방법을 적용하는 것을 추천합니다.