Network Instantiate

Network Instantiate 은 사용자가 방법을 사용하기 위한 가장 쉬운 방법으로 모든 클라이언트에서 prefab을 인스턴스화 하게 해줍니다. 플레이어가 Network.Instantiate()를 부를 때 그들은 GameObject 위에서 어떠한 입력 명령도 통제할 수 있습니다. 모든 셋업과 핸들링은 그 후드 아래서 실행되서 사용자가 컨트롤을 지정하기 위해 해야하는 것은 각 플레이어가 그들이 통제해야만 하는 Network.Instantiate()를 부르는 것입니다.

Instantiating prefabs은 Unity에서 가장 중요한 컨셉중의 하나입니다. Network Instantiate은 그것의 확장 버전으로 그것은 하나의 함수 콜을 하는 사용자가 네트워크위의 모든 기계에서 하나의 오브젝트를 인스턴스화할 수 있게 합니다.

Network.Instantiate()을 위한 인수 리스트는 아래와 같습니다:

static function Instantiate (prefab : Object, position : Vector3, rotation : Quaternion, group : int) : Object

Instantiate처럼 첫 세 개의 파라미터는 인스턴스화되는 prefab을 설명하고 그것이 놓여질 위치와 회전을 설명합니다. 추가적으로 그 그룹은 인수로서 전달됩니다. 보통 사용자는 그룹으로서 0에서 전달합니다. 그 그룹 넘버는 사용자가 원할 경우 네트워크 메세지를 필터링하도록 허락하는 메세지들을 함께 그룹 지을 수 있게 합니다.

Technical Details

씬의 뒤에서Network Instantiate는 단순히 RPC 콜 주변의 내장된 편리한 함수입니다. 그것은 인스턴스화되는 prefab의 식별자를 연재하고 모든 할당된NetworkViewID's와 그 위치를 연재합니다. 그리고 그것은 RPC call을 사용해서 네트워크를 통해서 그것을 보냅니다. Network.Instantiate()은 항상 RPC buffer에 Instantiate call을 저장할 것이고, 이것은 또한 다른 RPC 콜처럼 같은 방법으로 그 버퍼로부터 삭제될 수도 있다는 것을 의미합니다.

본질적으로 이것은 모든 클라이언트에서 행해지고 자동적으로 저장되는 일반적인 인스턴스화하는 것입니다. 인스턴스화되는 것 이후에 조인하는 플레이어는 Instantiate call을 받을 것입니다.

Communication Groups

커뮤니케이션 그룹은 커뮤니케이션을 차별화하고 어떤 클라이언트에세 보내고 받는 것을 비활성화하는 데에 중요합니다.

예를 들어, 두 명의 연결된 플레이어는 만날 수 없이 각자의 방에 있을지도 모릅니다. 그러므로 사용자의 상황에 따라 두 명의 플레이어 아바타의 상태를 전송할 이유가 없습니다. 사용자는 게임 데이터를 위해서 하나의 그룹을 가질 수 있고 그것은 채팅 커뮤니케이션을 위한 것입니다. 게임 데이터 그룹은 레벨이 로딩될 때 차단될 지도 모릅니다. 그러나 채팅 그룹은 오픈 상태로 있어서 플레이어들은 소통할 수 있습니다.

역링크