Version: 2017.2
NetworkDiscovery
네트워크 로비 매니저

NetworkIdentity

NetworkIdentity 컴포넌트는 새로운 네트워킹 시스템의 중심에 있는 Unity 컴포넌트입니다. AddComponents->Network->NetworkIdentity 메뉴 항목에서 이 컴포넌트를 오브젝트에 추가할 수 있습니다. 이 컴포넌트는 오브젝트의 네트워크 ID를 관리하고 네트워킹 시스템에 알립니다. NetworkIdentity 컴포넌트는 오브젝트에서 다음과 같이 나타납니다.

Unity 네트워크 시스템의 서버 권한이 있는 시스템의 경우, NetworkIdentities가 있는 네트워크로 연결된 오브젝트는 NetworkServer.Spawn()을 사용하여 서버에서 “스폰”되어야 합니다. 그러면 오브젝트가 NetworkInstanceId를 할당 받고 서버에 연결된 클라이언트에서 생성됩니다.

씬 오브젝트는 동적으로 인스턴스화된 오브젝트와 조금 다르게 처리됩니다. 이 오브젝트는 클라이언트와 서버에서 모두 씬에 나타납니다. 하지만 게임을 빌드할 때는 네트워크 ID가 있는 모든 씬 오브젝트가 비활성화됩니다. 클라이언트가 서버에 연결할 때 서버는 스폰 메시지를 통해 어떤 씬 오브젝트를 활성화해야 하고 오브젝트의 최신 상태 정보가 무엇인지 클라이언트에 알립니다. 그러면 플레이를 시작할 때 이제 올바르지 않은 위치에 있게 된 오브젝트나 심지어는 클라이언트가 연결하기 전에 어떤 이벤트에서 제거되었기 때문에 연결 시 곧바로 삭제될 오브젝트까지도 클라이언트에 포함되지 않도록 보장됩니다. Server Only 체크박스를 선택하면 이 특정 오브젝트가 클라이언트에서 스폰되거나 활성화되지 않도록 보장됩니다.

local player authority 설정을 사용하면 이 오브젝트를 소유한 클라이언트가 오브젝트를 제어할 수 있습니다. 즉, 해당 클라이언트의 로컬 플레이어 오브젝트가 오브젝트에 대한 권한을 갖습니다. 이 설정은 기타 NetworkTransform 같은 컴포넌트에도 사용됩니다.

이 컴포넌트에는 오브젝트에 할당된 씬 ID, 네트워크 ID 및 에셋 ID 같은 트래킹 정보가 포함됩니다. 씬 ID는 NetworkIdentity 컴포넌트가 있는 모든 씬 오브젝트에 유효합니다. 네트워크 ID는 이 특정 오브젝트 인스턴스의 ID고, 특정 오브젝트 타입의 인스턴스화된 여러 오브젝트가 있을 수 있습니다. 네트워크 ID는 예를 들어 네트워크 업데이트를 적용할 오브젝트를 식별하는 데 사용됩니다. 에셋 ID는 오브젝트가 어느 소스 에셋으로부터 인스턴스화되었는지 나타냅니다. 이 ID는 특정 오브젝트 프리팹이 네트워크를 통해 스폰될 때 내부적으로 사용됩니다. 이 정보는 인스펙터 하단에 있는 미리보기 창에 표시됩니다.

런타임 시 여기에 표시할 정보가 더 많이 있습니다(비활성화된 NetworkBehaviour는 굵은체가 아닌 글꼴로 표시됨).

프로퍼티

프로퍼티: 기능:
assetId 이 오브젝트와 연관된 프리팹을 식별합니다(스폰 관련).
clientAuthorityOwner 이 오브젝트에 대한 권한이 있는 클라이언트입니다. 권한이 있는 클라이언트가 없는 경우 null입니다.
connectionToClient 이 NetworkIdentity와 연관된 연결입니다. 서버의 플레이어 오브젝트에만 유효합니다.
connectionToServer 이 NetworkIdentity와 연관된 UConnection입니다. 로컬 클라이언트의 플레이어 오브젝트에만 유효합니다.
hasAuthority 이 오브젝트가 오브젝트의 권한이 있는 버전인 경우 (즉 서버에 있거나 localPlayerAuthority가 있는 클라이언트 에 있는 경우) true입니다.
isClient 이 오브젝트가 클라이언트에서 실행 중인 경우 true입니다.
isLocalPlayer 이 오브젝트가 로컬 컴퓨터에서 플레이어를 나타내는 오브젝트인 경우 true를 반환합니다.
isServer 이 오브젝트가 서버에서 실행 중이고 스폰된 경우 true입니다.
localPlayerAuthority 이 오브젝트를 소유한 클라이언트에서 오브젝트를 제어하는 경우 true입니다. 해당 클라이언트에 있는 로컬 플레이어 오브젝트가 오브젝트에 대한 권한을 갖습니다. NetworkTransform 등 다른 컴포넌트에 의해 사용됩니다.
netId 이 네트워크 세션의 스폰될 때 할당된 고유 식별자입니다.
observers 이 오브젝트를 볼 수 있는 클라이언트 NetworkConnections의 리스트이며 읽기 전용입니다.
playerControllerId 이 오브젝트와 연관된 컨트롤러의 식별자입니다. 플레이어 오브젝트에만 유효합니다.
sceneId 씬에 있는 네트워크 오브젝트의 고유 식별자입니다. 플레이 모드에서만 입력됩니다.
serverOnly 이 오브젝트가 클라이언트에서 스폰되지 않게 하는 플래그입니다.

힌트

  • 스폰될 프리팹에 NetworkIdentity 컴포넌트를 놓으십시오.
  • 네트워크된 모든 오브젝트에 NetworkIdentity가 필요합니다.
NetworkDiscovery
네트워크 로비 매니저