Version: 5.3
Unity의 네트워킹 요소(레거시)
네트워크 뷰

네트워크 뷰(레거시)

(새 프로젝트에는 5.1에서 도입된 새로운 네트워킹 시스템을 사용해야 합니다. 다음 내용은 이전 네트워킹 시스템을 사용하는 레거시 프로젝트를 대상으로 작성되었습니다.)

네트워크 뷰는 네트워크에서의 데이터 공유와 관련된 주요 컴포넌트입니다. 상태 동기화(State Synchronization)원격 프로시저 호출(Remote Procedure Calls) 이라는 두 종류의 네트워크 커뮤니케이션을 사용할 수 있습니다.

네트워크 뷰는 특정 오브젝트를 관찰해 변경 사항을 감지합니다. 이런 변화는 네트워크의 다른 클라이언트와 공유되어 모두가 상황의 변화를 알게 합니다. 상태 동기화 로 알려진 개념이며 관련된 자세한 내용은 상태 동기화 페이지에서 읽을 수 있습니다.

클라이언트 간 상태 동기화의 오버헤드 발생을 원하지 않는 상황이 발생할 수 있습니다. 예를 들어, 새로운 오브젝트나 다시 생성된 플레이어의 포지션 전송이 이에 해당합니다. 이런 이벤트는 자주 발생하지 않기 때문에 관련된 오브젝트의 상태를 동기화하는 것은 올바르지 않습니다. 대신 원격 프로시저 호출 로 클라이언트나 서버에 해당 작업을 수행하라고 지시할 수 있습니다. 원격 프로시저 호출에 대한 자세한 내용은 매뉴얼의 RPC 페이지를 참조하십시오.

기술적 세부 정보

네트워크에서 네트워크 뷰는 NetworkViewID 라는, 네트워크로 연결된 머신 중에서 고유하게 부여받은 식별자로서 식별됩니다. 128비트의 숫자로 표현되지만 네트워크를 경유할 때 자동으로 16비트로 압축됩니다.

클라이언트 측에 수신된 각각의 패킷은 NetworkViewID에서 지정된 특정 네트워크 뷰에 적용돼야 합니다. 이를 통해 Unity는 올바른 네트워크 뷰를 찾고 데이터를 언팩하며 수신되는 패킷을 네트워크 뷰의 관측된 오브젝트에 적용할 수 있습니다.

에디터에서 네트워크 뷰의 활용에 대한 자세한 내용은 Network View 컴포넌트 레퍼런스 페이지를 참조하십시오.

네트워크 오브젝트를 생성하기 위해 Network.Instantiate()를 사용한다면 네트워크 뷰를 어떻게 적절하게 할당할지 걱정할 필요가 없습니다. 씬 뒤에서 자동으로 처리해주기 때문입니다.

하지만 각 네트워크 뷰의 NetworkViewID 값을 Network.AllocateViewID를 사용해 수동으로 설정할 수 있습니다. 스크립팅 레퍼런스 문서는 예제를 통해 오브젝트를 RPC 함수로 각 클라이언트에게 수동으로 인스턴스화하고, AllocateViewID 로 NetworkViewID를 수동으로 설정하는 방법을 보여줍니다.

Unity의 네트워킹 요소(레거시)
네트워크 뷰