VRChat 마이너 갤러리 저장소

제 목
강좌/정보 백업)Udon 강좌 2 - 변수 동기화(synced)
글쓴이
조개껍데기
추천
3
댓글
4
원본 글 주소
https://gall.dcinside.com/vr/393278
  • 2020-04-08 12:15:42
							

1편 : Udon 강좌 - 1 온오프 물체 만들기 https://gall.dcinside.com/m/vr/337377


위에서 강좌를 보고 왔다면, 변수를 이용하여 거울을 온 오프 하는 방법을 알았을 것이다. 안봤다면 꼭 보자. 이해 못할 수도 있다.


위의 강좌는 버튼을 누르면 자신만 거울이 꺼졌다 켜진다. 


그렇다면 모두에게 보이게 하거나, 방장만 누를 수 있는 버튼을 만드는 방법을 알아보자.


해당 노드는 전에 쓴 강좌에서 만든 노드를 조금 수정한 것이다.


차이점이라면 Set Active함수를 Interact와 연결하지 않았고, Late Update 함수와 연결한 것이다.


Late Update는 실시간으로 실행하게 하는 이벤트이다. (단 Update보다는 느리게 실행한다.)


Late Update인 이유 ) 위에서 Set Variable로 switch변수를 바꿨다. 근데 만약 Late Update가 아니라 Update일 경우 순서가 바뀌어서 실행 될 수 있기 때문에 정확성을 위해 Late Update로 하는 것이다.


동작은 동일하다. 하지만 이번에 배울 변수 동기화를 위해서는 위와 같이 짜는 게 좋다.


1. 방장만 누를 수 있는 버튼 만들기. ex)노래방의 노래 선택 버튼


해당 기능은 유니티 2018버전 이전에 VRCSDK2를 이용한 Local이라던가 Owner이라던가를 설정하는 것과 같다. (누구에게 이벤트를 동기화 할 것인가)


이는 BroadCast Type이라고 한다. https://gall.dcinside.com/m/vr/391795 Udon에서는 좀 다르게 구현해야한다.


이를 구현하는 방법에 대해 알아보자.



위에서 이미 짠 노드를 보면 Switch변수에 따라 거울이 꺼지고 켜지는 것을 확인할 수 있다.


Switch변수를 보면 synced라는 체크 박스가 있는데 이를 체크하게 되면 된다.


방장 버튼을 만드려면 그저 저것만 체크하면 끝이다. 



정확한 원리) Synced를 체크하면 방장의 Switch변수를 다른 플레이어의 Switch변수와 네트워크를 통해 동기화 한다고 보면 된다.


만약 방장이 아닌 플레이어가 누를 경우 자신 고유의 Switch변수는 변경되지만 방장이 아니므로 Switch변수는 다른 사람과 공유 되지 않는다. 

공유 되지 않았으면, 주기적으로 방장의 Switch변수로 덮어 씌워지기 때문에 방장외에는 눌러도 반응이 없는 것으로 보이는 것이다.


만약 방장이라면 자신 고유의 Switch변수가 변경되고, 다른 플레이어게 자신의 Switch변수 값을 공유하므로 방장만 누를 수 있는 것처럼 보이는 것이다.




2.모두에게 공유 되는 변수 만들기.



위의 노드에서 단 두개, Networking Get Local Player와 Networking Set Owner을 추가 하였다.


이는 Add node에서 VRCSDK3 - VRCSDKBaseNetworking쪽에서 찾을 수 있다. 아니면 검색하던가


원리는 버튼을 누르면 현재 로컬 플레이어를 방장으로 만드는 것이다. 방장이 되면 위에서 설명한 원리대로 모두에게 Switch변수가 공유 될 것이다.


다만 이 방법의 경우 되긴 되는데... 버튼을 두번 눌러야한다. 이는 Set Owner가 Set Varaible보다 늦게 완료되는 게 이유인 것으로 추정한다.


버그인지 의도된건진 모르겠는데 좀 더 나은 방법을 알아내면 후에 작성함.



koper2004 ㅋㅋ 2020.04.08 12:16:02
koper2004 2020.04.08 12:16:03
조개껍데기 뭐 새꺄 2020.04.08 12:17:18
정말모르겠다 고생했네, 그러면 저게 지금 저댄방에있는거랑 비슷한 로직구조임? 2020.04.08 12:23:09
번호 분류 제목 글쓴이 날짜 추천
394269 일반 뭔가 쫄어 인가? 이거 쓰면 사람이 덜좆같아보임 6 반다이몰 2020-04-09 1
394268 일반 32살에 현재 반년이상 백수다 6 ㅇㅇ 175.223 2020-04-09 0
394267 일반 안씻은 부랄 냄새가 역해 7 ㅇㅇ 175.223 2020-04-09 0
394266 일반 이시간에 으외로 브알챗하는사람많네 6 OwO 2020-04-09 0
394265 일반 요즘 윤이 안보이노 8 ㅇㅇ 175.223 2020-04-09 0
394264 일반 뷰지에선 왜 오징어냄새남 4 ㅇㅇ 175.223 2020-04-09 0
394263 일반 우동으로 그런거 가능함? 4 반다이몰 2020-04-09 0
394262 일반 지금 브알팻 들가면 내가 무얼 할수잇을가 6 엔핏 2020-04-09 0
394261 일반 미르 뚜따해서 퍼지 머리 붙이고싶은데 2 00 39.118 2020-04-09 0
394260 일반 좆목 마렵다 2 2020-04-09 0
394259 일반 고양고양고양고양시 2 반다이몰 2020-04-09 0
394258 일반 뷰지를 뽀득뽀득 씻었더니 냄새가 덜해 3 ㅇㅇ 175.223 2020-04-09 0
394257 일반 어느 플라즈마 라이플이 더좋을가 9 반다이몰 2020-04-09 0
394256 일반 고양 5 EMoTcoN_ 2020-04-09 0
394255 일반 뉴비 질문좀... 1 ㅇㅇ 223.39 2020-04-09 0
394254 일반 오늘 알바중에있던일 4 ㅇㅇ 223.39 2020-04-09 0
394253 일반 어느게 낫냐? 5 반다이몰 2020-04-09 0
394252 일반 본인은 호기심이 존나 커서 막 존나 물어보고 그러는데 8 딜런추종자 2020-04-09 0
394251 일반 접속에러뜨는사람있냐 13 ㅇㅇ 116.126 2020-04-09 0
394250 일반 뭐지 9 ㅇㅇ 125.176 2020-04-09 0
394249 일반 일 마치고 상쾌한 마음으로 브알 챗 켰는데 8 ㅇㅇ 125.176 2020-04-09 0
394248 일반 브갤 행성이 19에 희생된 고닉 6 반다이몰 2020-04-09 0
394247 일반 본인 이번주 주말이 기대됨 ㅎ 5 딜런추종자 2020-04-09 0
394246 일반 그냥 닉네임 둠슬레이어 먹었다 씨빰 7 반다이몰 2020-04-09 0
394245 일반 좆목디코 실화냐 ㅋㅋㅋ 6 딜런추종자 2020-04-09 0
394244 일반 랜덤아바타 끼는월드 돌리다가 크래셔걸리면 좆됨 3 네로남불 2020-04-09 0
394243 일반 밀크친구한테 조인타려니까 끔 2 OwO 2020-04-09 0
394242 일반 모닝 브븡 2 Woong_E 2020-04-09 0
394241 일반 요즘은 그런거 없나 5 ㅇㅇ 106.102 2020-04-09 0
394240 일반 이 게임 하면서 하면 안될것 3 ys 14.55 2020-04-09 1
394239 일반 츄르줘잉간 2 ㅇㅇ 112.186 2020-04-09 0
394238 일반 브얄챗 업뎃 짜증 ㅇㅇ 175.211 2020-04-09 0
394237 일반 나도 현실에서 일본어로 대답한적 있어 1 ㅇㅇ 125.129 2020-04-09 0
394236 일반 차렷충 시절의 기억을 돌이켜보면 5 ㅇㅇ 125.176 2020-04-09 0
394235 일반 한국인 시발 3 ㅇㅇ 58.236 2020-04-09 0
394234 일반 진심으로 일본어도 외국어 취급하는 애들은 뭐임ㅋㅋ 1 ㅇㅇ 180.70 2020-04-09 0
394233 일반 투명 머테리얼 깨지는거 거지같네 ㅇㅇ 211.36 2020-04-09 0
394232 일반 ovr툴킷 살까말까 고민되네 3 ㅇㅇ 211.36 2020-04-09 0
394231 일반 모르겠다 6 꿀뚤 2020-04-09 0
394230 일반 님들 이꼠 재미없슴 ㅡㅡ 외하는거지? 2 네로남불 2020-04-09 0
념글 삭제글 갤러리 랭킹