Version: 2017.1
씬 오브젝트(Scene Objects)
멀티플레이어 로비(Multiplayer Lobby)

싱글 플레이어 게임을 Unity 멀티플레이어 게임으로 전환

이 문서는 새로운 Unity 멀티플레이어 네트워크 시스템을 사용하여 싱글 플레이어 게임을 멀티 플레이어 게임으로 전환하는 과정에 대해 다룹니다. 여기 설명된 과정은 단순화된 것으로, 실제 게임에서는 고수준의 과정을 필요로 합니다. 모든 경우에서 이대로 되지는 않지만, 기본적인 방향은 같습니다.

NetworkManager 설정

  • 새로운 게임 오브젝트를 씬에 추가하고 “NetworkManager”로 이름을 변경합니다.
  • NetworkManager 컴포넌트를 “NetworkManager” 게임 오브젝트에 추가합니다.
  • 게임 오브젝트에 NetworkManagerHUD 컴포넌트를 추가합니다. 이 컴포넌트는 네트워크 게임 상태를 관리하는 디폴트 UI를 제공합니다.

자세한 내용은 NetworkManager 사용를 참조하십시오.

플레이어 프리팹 설정

  • 게임에서 플레이어 게임 오브젝트용 프리팹을 찾거나 플레이어 게임 오브젝트에서 프리팹을 생성해야 합니다.
  • NetworkIdentity 컴포넌트를 플레이어 프리팹에 추가합니다.
  • NetworkIdentity의 LocalPlayerAuthority 상자에 체크합니다.
  • NetworkManager의 Spawn Info 섹션에 playerPrefab를 플레이어 프리팹으로 설정합니다.
  • 씬에 플레이어 게임 오브젝트 인스턴스가 있는 경우 인스턴스를 제거해야 합니다.

자세한 내용은 플레이어 오브젝트를 참조하십시오.

플레이어 이동

  • NetworkTransform 컴포넌트를 플레이어 프리팹에 추가합니다.
  • isLocalPlayer에 따라 입력 및 제어 스크립트를 업데이트합니다.
  • 스폰된 플레이어 및 isLocalPlayer를 사용하도록 카메라를 수정합니다.

예를 들어, 아래 스크립트는 로컬 플레이어용 입력만을 처리합니다.

using UnityEngine;
using UnityEngine.Networking;

public class Controls : NetworkBehaviour
{
    void Update()
    {
        if (!isLocalPlayer)
        {
            // exit from update if this is not the local player
            return;
        }

        // handle player input for movement
    }
}

기본 플레이어 게임 상태

  • 중요한 데이터를 포함하는 스크립트는 MonoBehaviours 대신 NetworkBehaviours에 포함되도록 해야 합니다.
  • 중요한 멤버 변수는 SyncVars에 포함되도록 해야 합니다.

상태 동기화를 참조하십시오.

네트워크 액션

  • 중요한 액션을 포함하는 스크립트는 MonoBehaviours 대신 NetworkBehaviours에 포함되도록 해야 합니다.
  • 중요한 플레이어 액션을 수행하는 함수는 커맨드로 업데이트해야 합니다.

네트워크 액션을 참조하십시오.

비플레이어 게임 오브젝트

적과 같은 비플레이어 프래팹을 다음과 같이 고정해야 합니다.

  • NetworkIdentify 컴포넌트를 추가해야 합니다.
  • NetworkTransform 컴포넌트를 추가해야 합니다.
  • NetworkManager 에 스폰가능한 프리팹을 등록해야 합니다.
  • 스크립트에 게임 상태와 액션을 업데이트해야 합니다.

스포너

  • 스포너 스크립트를 NetworkBehaviour로 변환할 수 있습니다.
  • isServer 프로퍼티 또는 OnStartServer() 함수를 사용하여 스포너가 서버에서만 실행되도록 수정해야 합니다.
  • 생성된 오브젝트에 대해 NetworkServer.Spawn()을 호출합니다.

플레이어 스폰 포지션

  • 새로운 게임 오브젝트를 추가하고 플레이어 시작 지점에 위치시키십시오.
  • 새 게임 오브젝트에 NetworkStartPosition 컴포넌트를 추가합니다.

로비

  • 로비 씬을 생성합니다.
  • 씬에 새로운 게임 오브젝트를 추가하고 “NetworkLobbyManager”로 이름을 변경합니다.
  • NetworkLobbyManager 컴포넌트를 새로운 게임 오브젝트에 추가합니다.
  • 아래 요소에 대한 관리자를 설정합니다.
    • 프리팹
    • 스포너
씬 오브젝트(Scene Objects)
멀티플레이어 로비(Multiplayer Lobby)