Develog
로그인

[Unity] 멀티 플레이 구현

muchan
muchan
∙2026년 6월 27일∙조회 13
UnityNetwork
[Unity] 멀티 플레이 구현
유니티 공부 기록
본문 로딩 중...
이전 글[Unity] UV좌표계
다음 글[Unity] Shader Graph
0
muchan

게임 버그도 콘텐츠입니다.

댓글 0

개요

유니티에서 멀티 플레이 구현하기 위한 세팅과 예제 코드를 작성해봤다

연습해보기

우선 유니티 프로젝트를 클라우드로 만들게 되면

Project Settings -> Services -> Unity Project ID에 코드가 생긴 것을 볼 수 있다

cloud.unity.com에 접속해서도 확인할 수 있다

NetworkManager

NetworkManager는 NGO의 핵심 싱글톤으로 멀티플레이 세션 전체를 담당한다

네트워크 세션의 시작/종료, 클라이언트 연결 관리, NetworkObject 스폰, 씬 동기화 등을 모두 담당한다.

세가지 실행모드

모드설명시작 메서드
Host서버 + 클라이언트를 겸함. 방장이 직접 플레이하는 구조StartHost()
Server전용 서버. 게임에 직접 참여하지 않음StartServer()
Client서버에 접속하는 참여자StartClient()

주요 프로퍼티

  • .Singleton: 전역 싱글톤 접근
  • .IsHost: 호스트 여부
  • .IsServer: 서버 여부
  • .IsClient: 클라이언트 여부
  • IsListening: 현재 연결 수신 중 여부
  • ConnectedClientsIds: 연결된 클라이언트 ID 목록
  • LocalClientId: 자기 자신의 클라이언트 ID

주요 콜백 이벤트

  • .OnClientConnectedCallback: 누군가 접속했을 때
  • .OnClientDisconnectCallback: 누군가 접속 종료했을 때

콜백은 OnEnable에서 등록하고 OnDisable에서 반드시 해제해야 메모리 누수를 막을 수 있다.

Shutdown 주의사항

Shutdown() 호출 후에는 NGO가 씬 로드를 더 이상 구동하지 않으므로, 로비로 돌아가려면 NGO의 씬 관리가 아닌 UnityEngine.SceneManagement.SceneManager로 직접 로드해야 한다

scss
m_NetworkManager.Shutdown();
SceneManager.LoadScene("LobbyScene");  // 직접 로드

NetworkManager 컴포넌트

빈 게임 오브젝트를 만들고 NetworkManager 컴포넌트를 추가한다
여기서 Network Topology를 보면 Client Server 구조임을 알 수 있다

Unity Transport

NetworkManager의 실제 패킷 전송을 담당하는 컴포넌트
NGO 자체는 "무엇을 보낼지"만 결정하고 실제 "어떻게 보낼지"는 이 컴포넌트가 처리한다

테스트

Window - Multiplayer - Multiplayer Play Mode를 선택해서

Player2를 체크하면

다른 Game 씬이 나오게 된다

플레이 해서 한쪽 Game Scene에서는 Host, 다른 Game Scene에서는 Client로 접속할 수 있다

 

새 글이 올라오면 Develog 알림으로 알려드려요

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.

관련 글

[Unity] 제네릭의 컴파일

[Unity] 제네릭의 컴파일

ㅇㅇ

10월 7일42
[Unity] 제네릭과 가변성(variance)

[Unity] 제네릭과 가변성(variance)

제네릭과 가변성

10월 6일821
[Unity] IEnumerator 개요

[Unity] IEnumerator 개요

코루틴에이저포에버

10월 6일4
[Unity] 제네릭의 컴파일
Unity

NEW[Unity] 제네릭의 컴파일

ㅇㅇ

KYO
KYO
420
KYO
KYO
∙10월 7일
420
[Unity] 제네릭과 가변성(variance)
Unity

[Unity] 제네릭과 가변성(variance)

제네릭과 가변성

KYO
KYO
821
KYO
KYO
∙10월 6일
821
[Unity] IEnumerator 개요
Unity

[Unity] IEnumerator 개요

코루틴에이저포에버

KYO
KYO
400
KYO
KYO
∙10월 6일
400