이 글은 https://hatuxes.hatenablog.jp/entry/2020/04/05/013323 이곳의 내용을 한국어로 해석해서 이해하기 쉽게 정리해둔 글입니다.
3가지의 VRC의 동기화 솔루션
1. Udon Behaviour의 Ownership Transfer on Collision 동기화
2. 변수의 동기화
3. 함수처리 동기화 (흡사 RPC)
첫번째. Udon Behaviour - Ownership Transfer on Collision
Udon Behaviour가 있는 오브젝트에 접촉되는 플레이어가 그 스크립트의 Owner가 되어 오브젝트의 Transform을 다른 플레이어에게 동기화 시킨다.
예를 들어 플레이어가 5명이 있고 Udon Behaviour가 있는 하나의 공이 있을때
Player1이 공을 들어 옮기면 Player1이 나머지 Player2~5에게 위치를 보낸다.
이번엔 Player2가 공을 들어 옮기면 Player2가 나머지 Player1, 3~5에게 위치를 보낸다
두번째. 변수의 동기화 - UdonSynced
이 솔루션은 월드 전체와 나중에 들어온 사람에게도 동기화가 된다.
지원되는변수 목록 |
bool char byte int long unsigned byte unsigned int unsigned long float double short unsigned short string Color Color32 Quaternion Vector2 Vector3 Vector4 |
U#에서는 선언한 변수의 맨 앞에 [UdonSynced] 속성을 달아줌으로서 변수 싱크를 사용할 수 있다.
[UdonSynced (UdonSyncMode)] |
UdonSyncMode - UdonSyncMode.None - 단적 동기화 - UdonSyncMode.Linear - 선형 보간 동기화 - UdonSyncMode.Smooth - 매끄러운 보간 동기화 - UdonSyncMode.NotSynced - 동기화 하지 않음 |
단, 이 변수 싱크를 선언한 변수는 오직 Owner만 값을 수정할 수 있기 때문에 변수값을 수정해야 할 경우에는 SetOwner()로 Owner를 지정 후 수정해야한다.
세번째. 함수처리 동기화 - RPC
앞으로 함수를 호출할 때 가장 중요한 요소가 될거라 생각한다.
함수처리 동기화는 SendCustomNetworkEvent로 Public함수를 발생시킨다.
SendCustomNetworkEvent(NetworkEventTarget target, String name) |
NetworkEventTarget target - VRC.Udon.Common.Interfaces.NetworkEventTarget.All - 모든 플레이어에게 이벤트 발생 - VRC.Udon.Common.Interfaces.NetworkEventTarget.Owner - Owner에게만 이벤트 발생 |
String name - "function" - 이벤트함수 이름 |
물론 Owner중심으로 발생되기 때문에 Owner를 지정해줘야 한다.
싱크에 관한 소스코드와 다른 다양한 Udon스크립트는 아래에서 받아볼수있다https://github.com/mtytheone/Introduce-USharp/releases
'UDON 강좌' 카테고리의 다른 글
UDON 이벤트 함수 정리 문서 (0) | 2021.01.28 |
---|---|
UDON Node 강좌 (2) : Transform으로 오브젝트 움직이기 (0) | 2020.04.12 |
UDON U# 강좌 (3) : (이벤트)콜라이더 충돌 다루기 (0) | 2020.04.09 |
UDON 자주 쓰이는 이벤트 함수 정리 (0) | 2020.04.09 |
UDON U# 강좌 (2) : 오브젝트 움직이기 (0) | 2020.04.09 |