[Unity] 멀티 플레이 구현
![[Unity] 멀티 플레이 구현](/_next/image?url=https%3A%2F%2Fdata.develog.develrocket.com%2Fupload%2Fdevelog%2Fuser_1777093328305%2F1782543609370-dhldb2%2F_____2026-06-27_155852.png&w=3840&q=75)
댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요!
유니티에서 멀티 플레이 구현하기 위한 세팅과 예제 코드를 작성해봤다

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

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

cloud.unity.com에 접속해서도 확인할 수 있다
NetworkManager는 NGO의 핵심 싱글톤으로 멀티플레이 세션 전체를 담당한다
네트워크 세션의 시작/종료, 클라이언트 연결 관리, NetworkObject 스폰, 씬 동기화 등을 모두 담당한다.
세가지 실행모드
| 모드 | 설명 | 시작 메서드 |
|---|---|---|
| Host | 서버 + 클라이언트를 겸함. 방장이 직접 플레이하는 구조 | StartHost() |
| Server | 전용 서버. 게임에 직접 참여하지 않음 | StartServer() |
| Client | 서버에 접속하는 참여자 | StartClient() |
주요 프로퍼티
주요 콜백 이벤트
콜백은 OnEnable에서 등록하고 OnDisable에서 반드시 해제해야 메모리 누수를 막을 수 있다.
Shutdown 주의사항
Shutdown() 호출 후에는 NGO가 씬 로드를 더 이상 구동하지 않으므로, 로비로 돌아가려면 NGO의 씬 관리가 아닌 UnityEngine.SceneManagement.SceneManager로 직접 로드해야 한다
m_NetworkManager.Shutdown();
SceneManager.LoadScene("LobbyScene"); // 직접 로드

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

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

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

Player2를 체크하면

다른 Game 씬이 나오게 된다

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