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로 지운 후

  1. 플레이 버튼을 눌러줍시다

자 월드 디스크립터가 없다고 오류가 뜨죠?

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라는 이벤트를 실행 시킨거교요

이렇게 우동의 기본적인 첫 걸을을 떼었습니다

업데이트: