중요: UNet은 지원이 중단된 솔루션이며, 새로운 멀티플레이어 및 네트워킹 솔루션(게임 오브젝트용 넷코드)이 개발 중입니다. 자세한 내용과 다음 단계는 게임 오브젝트용 Unity 넷코드 웹사이트에 있는 정보를 참조하십시오. |
Network Identity 컴포넌트는 Unity 네트워킹 고수준 API의 핵심입니다. 이 컴포넌트는 네트워크에서 게임 오브젝트의 고유 ID를 설정하고 해당 ID를 사용해 네트워킹 시스템에 게임 오브젝트를 알립니다.
프로퍼티 | 기능 |
---|---|
Server Only | Unity가 게임 오브젝트를 클라이언트가 아닌 서버에서만 스폰하도록 하려면 이 체크박스를 선택합니다. |
Local Player Authority | 게임 오브젝트를 소유한 클라이언트에 이 게임 오브젝트에 대한 네트워크 제어 권한을 부여하려면 이 체크박스를 선택합니다. 해당 클라이언트의 플레이어 게임 오브젝트가 그에 대한 권한을 보유합니다. Network Transform 등 다른 컴포넌트에서 권한 소스로 처리할 클라이언트를 결정하는 데 사용합니다. |
Unity의 서버 권한이 있는 네트워킹 시스템을 사용하는 경우 서버에서 NetworkServer.Spawn을 사용해 네트워크 ID가 있는 네트워크 게임 오브젝트를 스폰해야 합니다. 그러면 자동으로 서버에 연결된 클라이언트에 게임 오브젝트가 생성되고 게임 오브젝트에 NetworkInstanceId가 할당됩니다.
런타임에 스폰되는 프리팹에 Network Identity 컴포넌트를 배치해야만 네트워크 시스템에서 프리팹을 사용할 수 있습니다
씬의 일부로 저장되는 게임 오브젝트(예: 환경 소품)도 네트워크에 연결할 수 있습니다. 게임 오브젝트를 네트워크에 연결하면 오브젝트가 약간 다르게 동작합니다. 오브젝트가 전체 네트워크에 걸쳐 스폰되도록 해야 하기 때문입니다.
게임을 빌드할 때 Unity는 Network Identity 컴포넌트가 있는 모든 씬 기반 게임 오브젝트를 비활성화합니다. 클라이언트가 서버에 접속하면 서버에서 스폰 메시지를 전송하여 활성화할 씬 게임 오브젝트와 오브젝트의 최신 상태 정보를 클라이언트에 알립니다. 그러면 클라이언트 게임을 플레이하기 시작할 때 게임에 잘못된 위치에 있는 게임 오브젝트가 포함되거나 Unity가 연결 시에 게임 오브젝트를 스폰한 후 즉시 파괴하지 않습니다(예를 들어 클라이언트가 연결하기 전에 이벤트로 인해 게임 오브젝트가 제거된 경우).
이 컴포넌트는 예를 들어 오브젝트에 할당된 씬 ID, 네트워크 ID 및 에셋 ID 등과 같은 네트워크 트래킹 정보를 포함하고, 해당 정보를 미리보기 창에 표시합니다. 이 컴포넌트를 사용하여 조사 및 디버깅에 유용할 수 있는 정보를 확인할 수 있습니다.
씬 ID는 NetworkIdentity 컴포넌트가 있는 모든 씬 오브젝트에 유효합니다. 네트워크 ID는 이 특정 오브젝트 인스턴스의 ID입니다. 여러 오브젝트가 특정 프리팹으로부터 인스턴스화될 수 있고, 네트워크 ID는 네트워크 업데이트를 적용할 오브젝트를 식별하는 데 사용됩니다. 에셋 ID는 오브젝트가 어느 소스 에셋으로부터 인스턴스화되었는지 나타냅니다. 이 ID는 특정 게임 오브젝트 프리팹이 네트워크를 통해 스폰될 때 내부적으로 사용됩니다.
런타임 시 여기에 표시할 정보가 더 많이 있습니다(비활성화된 NetworkBehaviour는 굵은체가 아닌 글꼴로 표시됨).
프로퍼티 | 설명 |
---|---|
assetId | 이 오브젝트와 연관된 프리팹을 식별합니다(스폰 관련). |
clientAuthorityOwner | 이 오브젝트에 대한 권한이 있는 클라이언트입니다. 권한이 있는 클라이언트가 없는 경우 null입니다. |
connectionToClient | 이 NetworkIdentity와 연관된 NetworkConnection입니다. 서버의 플레이어 오브젝트에만 유효합니다. |
connectionToServer | 이 NetworkIdentity와 연관된 NetworkConnection입니다. 로컬 클라이언트의 플레이어 오브젝트에만 유효합니다. |
hasAuthority | 이 오브젝트가 권한이 있는 오브젝트 버전인 경우 (노멀 오브젝트의 서버에 있거나 localPlayerAuthority가 있는 클라이언트에 있음을 의미) true입니다. |
isClient | 이 오브젝트가 클라이언트에서 실행 중인 경우 true입니다. |
isLocalPlayer | 이 오브젝트가 로컬 컴퓨터에서 플레이어를 나타내는 오브젝트인 경우 true를 반환합니다. |
isServer | 이 오브젝트가 서버에서 실행 중이고 스폰된 경우 true입니다. |
localPlayerAuthority | 이 오브젝트를 소유한 클라이언트에서 오브젝트를 제어하는 경우 true입니다. 해당 클라이언트에 있는 로컬 플레이어 오브젝트가 오브젝트에 대한 권한을 갖습니다. NetworkTransform 등 다른 컴포넌트에 의해 사용됩니다. |
netId | 이 네트워크 세션의 스폰될 때 할당된 고유 식별자입니다. |
observers | 이 오브젝트를 볼 수 있는 클라이언트 NetworkConnections의 리스트이며 읽기 전용입니다. |
playerControllerId | 이 오브젝트와 연관된 컨트롤러의 식별자입니다. 플레이어 오브젝트에만 유효합니다. |
SceneId | 씬에 있는 네트워크 오브젝트의 고유 식별자입니다. 재생 모드에서만 입력됩니다. |
serverOnly | 이 오브젝트가 클라이언트에서 스폰되지 않게 하는 플래그입니다. |