2.1 이벤트의 개념, cyanemu
title: “2.1 이벤트의 개념, CyanEmu” categories:
-
UDONSHARPcourse
#2.1 이벤트의 개념, CyanEmu : 네이버 블로그
저번 강의에서는 인텔리센스, 디버그 설정, 파일 만드는법 을 했습니다
우동 기초 강의 시작합니다
자 일단 위와 같이 큐브를 만들어주세요
우동 스크립트 파일 만드는 방법은 아시죠?
저번 강의해서 했으니깐 다 아실거라 믿습니다
C#의 기본 사용법 강의를 먼저 하겠습니다
자 일단 비주얼 스튜디오를 열면 이런 창이 뜨죠?
자 먼저 위에 파란 동그라미는
저장버튼입니다
아래 빨간 밑줄들은 스크립트 파일들입니다.
즉 최근에 연 C#파일들을 탭으로 볼 수 있습니다
오른쪽을 보시면 솔루션 탐색기랑 속성이 있을거에요
모두 X를 눌러 닫아줍시다
우동 코딩할땐 필요 없는 옵션입니다
자 화면은 이렇게 하는게 제일 좋습니다
모니터가 두개면 더 좋고
윈도우키+왼쪽화살표버튼 으로 옆으로 정렬 할 수 있습니다
또
컨트롤+마우스 휠로 둘 다 크기를 조절 할 수 있습니다
다 다시 비주얼 스튜디오로 들어오겠습니다
자 일단 있는 코드를 보면 뭔지 하나도 모르겠죠?
일단 위에 using 은
using 우동샤프
using 유니티 엔진
using 브알챗.에스디케이베이스
using 브알챗.우동
있지요?
얘내는 이제 우동을 사용하기 위해 필요한 최소한의 얘들이 모여있는겁니다
일종의 모드같은거죠
자 그 아래가 우리가 집중할 코드 부분입니다
public class Cube2 : UdonSharpBehaviour는
Cube2 라는 이름을 가진 파일의 제목이라고 보면 됩니다.
우리는 코드를 이 안에
요 안에 적을겁니다
자 코드를 보면 중괄{}가 네개가 있죠?
보이시나요?
얘내는 구역이라고 생각하시면 됩니다
자 새로운 구역을 만들어 보겠습니다
자 up을 검색하고 첫번째에 update가 뜨면
엔터나 탭을 눌러주세요(암거나)
스크린샷처럼 해주세요
자 이코드의 중요한 부분은
Start와
Update라는 애들이
구역이 나눠졌다는 겁니다
Start는
유니티에서 플레이될때 처음 한번 실행되고
Update는 플레이되고있을때 프레임마다 실행됩니다
자 위 스크린샷처럼
Debug.Log(“스타트”);
를 쳐주세요
복사 붙여넣기보다는 치시는걸 추천드려요
한 번 이렇게 Debug를 왼쪽에 붙여보시겠어요?
그 후 맨 마지막 중괄호 }를 지웠다가 써보세요
다시 Debug가 옆으로 이쁘게 정리되죠?
이것은 {}기호가 구역을 나눌때마다 한칸씩 옆으로 들여쓰기를 함을 알아야합니다
자 문장의 맨 끝에는 세미콜론이 붙습니다
하지만{} 뒤는 세미콜론이 붙지 않습니다
세미콜론이 붙고 안붙고는 아직 혯갈릴테니 예제를 잘 봐주세요
우리는 이 코드를 저장할겁니다
Debug.Log는
로그를 출력하는 코드입니다.
한번 바로 실행해보겠습니다.
저장 버튼 다들 아시죠?
저장 버튼을 하기 전에는 cs뒤에 *모양이 있습니다
저장을 한 후
유니티로 돌아와
1.모든 콜솔을 Clear로 지운 후
- 플레이 버튼을 눌러줍시다
자 월드 디스크립터가 없다고 오류가 뜨죠?
world를 에셋에서 검색 한 후
VRCWorld를 넣어주세요
다시 플레이를 누른 후
콘솔을 보면
잘 뒤져보면 스타트 로그가 나오죠?
로그가 안나오는경우에는
오른쪽 버튼들이 눌려있나(비활성화) 확인해보세요
다시 코드로 돌아와보겠습니다
이번엔 업데이트 안에
Debug.Log(“업데이트”); 를 넣겠습니다
바로 저장을 하고 실행을 해보겠습니다
플레이를 하고 콘솔을 확인하시면
업데이트가 계속 뜨지요?
Update는 매 프레임마다 실행됩니다.
90fps면 초당 90번 실행돼겠지용
아까 콘솔로그에 업데이트가 계속 뜨는 이유는
프레임마다 Update가 호출되기 때문이지요
아까 Start기억 나시나요?
Start는 시작할때 한번 실행되고
Update는 매 프레임마다 실행되죠
이렇게 특정 상황일 때 실행되는 것을 “이벤트”라고합니다
이번엔 새로운 이벤트를 배워볼게요
}
아래에
ov
를 치면 첫째줄에 override가 뜨지요?
탭이나 엔터를 눌러줍시다
override를 친 후 스페이스를 쳐봅시다
막 여러가지 뜨죠?
join을 검색해주세요
그럼 OnPlayerJoined가 뜨죠? 탭이나 엔터 눌러주세요
base.OnPlayerJoined(player);는 지워주세요
base.으로 되어있는얘는 지우고 한다고 기억하심 돼용
자 그럼 OnPlayerJoined얘는 뭐냐?
플레이어가 방에 입장하면 실행되는 이벤트입니다.
우리는 이 이벤트와 위에 Start와 Update의 차이점을 알아야 합니다
바로
Start와Update는 모든 유니티 게임에서 작동하지만
OnPlayerJoined는 오직 Vrchat SDK가 있는 게임에서만 작동합니다
이해 돼셨나요?
중요한것은
일반 유니티 이벤트와
vrchat 이벤트
두 종류가 있고
override한 뒤에 있는 얘들은 모두 vrchat이벤트라는 겁니다
다시 코드로 돌아와
Debug.Log(“플레이어 조인”);를 쳐주세요
Update()
아래에 있었던 디버그 로그는 지워주세요
테스트하는데 자꾸 뜨면 안돼잖아용
이런 코드가 되어야 합니다
저장하고 플레이버튼을 눌러주세요
플레이를 누른 후
윈도우->CyanEmu을 눌러주세요
메뉴가 없으면 CyanEmu가 임포트가 안된것이니
https://github.com/CyanLaser/CyanEmu
다운받고 설치해주세요.
창이 뜨죠?
이 창을 오른쪽 칸에다가 넣어주세요
그 후 콘솔에서 로그를 클리어 해주고
스폰 리모트 플레이어를 해주세요
플레이어 조인
이라는 로그가 뜨죠?
로그가 안뜨면 클리어를 한번 더 누르고 해보세요
이 CyanEmu이라는 에뮬레이터는 유니티 내에서 vrchat에 있는 기능을 사용 할 수 있게 해줍니다
어쨋거나 플레이어를 스폰할때마다 플레이어조인이라는 이벤트가 실행되어
로그가 뜨는 것을 확인 할 수 있습니다
다시 코드로 돌아와서
이번엔 Interact라는 이벤트를 추가해주세요
base~~는 지워주세요
이런 코드로 해주세요
Interact는 뭐냐?
플레이어가 오브젝트를 클릭 했을 때 실행되는 이벤트입니다
요 코드처럼 쳐주세요
Debug.Log(“클릭클릭”);
저장 후 유니티에서 플레이를 눌러주세요
플레이를 누른 후 큐브를 보면
Trigger Interact라는 버튼이 있지요?
이 버튼은 플레이어가 마우스클릭으로 오브젝트를 누를 때의 기능입니다
누를 때마다 클릭클릭이라는 로그가 뜨죠?
이번엔 로컬 테스트도 해볼겁니다
vrchat을 연 후 콘솔창을 열어줍시다
콘솔창 여는 방법
오른쪽쒸프트 + ~ + 3번 키입니다
열리지 않으면 저번 강의를 참고해주세요
오브젝트를 클릭 할 때마다 로그가 뜨죠?
이렇게 override한 이벤트들은 모두 vrchat 전용 이벤트들입니다
우리는 그 중에서 Interact라는 이벤트를 실행 시킨거교요
이렇게 우동의 기본적인 첫 걸을을 떼었습니다