복제

GameObject를 동기화하기 위해서는 StrixReplicator 요소를 추가해야 합니다. 이것은 편집기에서 미리 해야 합니다. Replicator 개체 모두가 레지스트리에 등록되어 전 클라이언트 간에 공유되어야 하기 때문입니다. 런타임 중에는 Replicator 요소를 추가해서는 안 됩니다.

플레이어 간에 개체가 복제되는 경우, 각 플레이어의 월드는 모두 같은 수준으로 하는 것을 권장합니다. 복제된 개체는 플레이어의 월드에서 실제 개체이므로 그 안에 있는 개체와 상호작용을 할 수 있습니다. Strix는 비전용 서버를 이용하므로 비동기화 문제가 일어나지 않도록 주의해야 합니다.

Replicator는 다음 두 가지입니다.

  1. 장면 - 장면 개체에 연결

  2. 프리팹 - 프리팹 개체에 연결

Strix Replicator는 혼자서는 개체의 인스턴스화와 삭제만 동기화합니다. 다른 상태는 동기화되지 않습니다. 복제된 개체는 기본 월드 좌표(0, 0, 0)에서 인스턴스화됩니다.

참고

레플리카의 포지션은 스크립트가 보기 전에 다른 요소(StrixMovementSynchronizer)가 변경할 수 있습니다.

Replicator 속성

StrixReplicator 요소는 다음과 같은 속성이 있으며, 이것은 인스펙터에서 구성할 수 있습니다.

Send Rate

int

개체 속성에 1초마다 일어나는 업데이트 수.

Instantiable By

Anyone 또는 Room Owner

이 개체의 레플리카를 다른 클라이언트에 인스턴스화는 사람을 결정합니다.
이것이 Anyone이라면 방에 있는 플레이어 모두가 이 GameObject의 새 레플리카를 다른 모든 클라이언트에 인스턴스화합니다. 이것은 스크립트로 다이내믹하게 인스턴스화되는 개채에 유용합니다.
이것이 Room Owner일 때는 방장만 레플리카를 인스턴스화합니다. 따라서, 다른 각각의 클라이언트에는 이 개체의 레플리카가 최대 1개씩만 존재합니다. 이것은 장면에 정적으로 위치하는 픽업 같은 개체에 유용합니다.

Connection Closed Behaviour

Delete 또는 Change Ownership

연결이 끊어지면 동작을 결정합니다.
기본값은 Delete이며 이것은 연결이 끊어졌을 때 개체를 파괴합니다.
Change Ownership은 개체의 소유자를 새로 선택하고 소유권을 그 소유자로 바꿉니다.
이것으로 방이 빌 때까지 개체를 생존 상태로 유지할 수 있습니다.

Sync Destroy

bool

오리지널이 파괴되었을 때 이 개체를 파괴할지 판단합니다.
기본값은 참입니다. 거짓이라면 개체는 서버의 삭제된 메시지를 무시합니다.
즉, 오리지널 개체가 파괴되어도 레플리카는 다른 클라이언트에 남아 있다는 뜻입니다.
이것은 플레이어가 예기치 않게 연결 해제되었을 때 레벨에서 개체를 원활하게 제거하기 위함입니다.

인스펙터에는 다음 런타임 속성도 표시됩니다. 이것은 디버깅이나 스크립트 액세스에 유용할 수 있습니다.

owner

UID (읽기 전용)

UID가 표시하는 개체의 소유자.
이 속성은 스크립트에서 ownerUid로 액세스할 수 있습니다.

isLocal

bool (읽기 전용)

참이면 로컬(오리지널) 개체이며, 현재 클라이언트가 소유자입니다. 거짓이면 레플리카 개체입니다.
이것은 스크립트가 이 개체를 수정하거나 통제해야 하는지 판단할 때 유용합니다.

참고

인스펙터에서는 Object TypeNetwork Instance Id 속성도 볼 수 있습니다. Strix는 이것을 내부에서 타입과 개체 식별 목적으로 이용합니다.

StrixReplicator는 스크립트에 다른 속성(인스펙터에게는 보이지 않음)이 있습니다. 그중에서 특히 유용한 것은 다음과 같습니다.

isSync

bool (읽기 전용)

참이면 레플리카(다른 클라이언트에 있는 것)가 하나 이상인 로컬(오리지널) 개체입니다.

ownerUid

UID (읽기 전용)

UID가 표시하는 개체의 소유자.

roomMember

CustomizableMatchRoomMember (읽기 전용)

CustomizableMatchRoomMember 개체가 표시하는 이 개체의 소유자.

동기화

개체의 상태를 동기화하려면 개체에 StrixBehaviour 스크립트를 추가해야 합니다.

변수 복제 참조.

RPC

Replicator는 RPC로 원격 클라이언트에 대해 액션을 할 수 있습니다.

RPC 참조.

참고

StrixBehaviour 스크립트가 Replicator가 있는 개체에 있다면, 스크립트에서 strixReplicator 멤버를 통해 그 Replicator에 액세스할 수 있습니다.