Network Discovery
네트워크 로비 매니저

Network Identity

Network Identity 컴포넌트는 Unity 네트워킹 고수준 API의 핵심입니다. 이 컴포넌트는 네트워크에서 게임 오브젝트의 고유 ID를 제어하며, 해당 ID를 사용하여 네트워킹 시스템이 게임 오브젝트를 인지하도록 만듭니다.

인스펙터 창의 Network Identity 컴포넌트
인스펙터 창의 Network Identity 컴포넌트
프로퍼티 기능
서버 전용(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 이 오브젝트가 클라이언트에서 스폰되지 않게 하는 플래그입니다.
Network Discovery
네트워크 로비 매니저