title: “2.3 유니티 변수” categories:

  • UDONSHARPcourse

    #2.3 유니티 변수 : 네이버 블로그

우리 하기 전 약속하나 합시다

어렵거나 이해가 안간다면

rage147#2898

디스코드로 친추주세요!

오늘 강의는 유니티의 클래스입니다

그 전에 클래스란 뭐냐? 자료형과 비슷합니다

유니티에서 큐브를 만들면

cube (0)

cube (1)

cube (2)

이렇게 만들어 지는 것과

int A

int B

int C 와 비슷하다고 생각하면 됍니다

바로 예시를 보겠습니다

큐브를 생성하고 Udon 컴포넌트를 열어주세요

선언입니다

못보던 public을 사용하지요?

퍼블릭을 앞에 추가를 하면

요렇게 udon behaviour에서 게임 오브젝트를 연결 할 수 있습니다

이렇게 public은 외부의 값을 불러올 때 사용합니다

게임오브젝트 g1과 인터렉트를 추가했습니다

인터렉트는 오브젝트를 클릭 하면 실행되는 이벤트입니다

g1. 을 쳐보세요

g1하고 점입니다.

인텔리센스 기능으로 여러개가 뜨죠?

SetActive 위에 마우스를 슬쩍 올려 보세요

오른쪽에

void GameObject.SetActive(bool value)가 뜨죠?

저번 강의 때 배운 것 기억나나요?

SetActive라는 함수는

출력이 없고(void)

입력이 참 또는 거짓(bool)

라는 걸 알 수 있습니다

이 SetActive 함수는 오브젝트를 끄거나 키게 만드는 함수입니다

요렇게 하면 상호작용했을때 g1이 꺼지겠지요?


다음 예제로 가겠습니다

MeshRenderer A와

Material B를 만들어주세요

그 후 A는 자신의 큐브

B는 아무 메테리얼을 연결해주세요. 흰색이 아닌 다른색으로요

그 후 플레이를 누르고 트리거 인터렉트를 누르면

짜잔 색이 바뀝니다

우왕~~ 신기하죠?

안신기하면 말고

우선 큐브의 오른쪽 Mesh Renderer컴포넌트를 봅시다

메쉬 렌더러라는 컴포넌트 안에

메테리얼이라는 작은 옵션이 있죠?

우리는 A라는 메쉬렌더러의

메테리얼을 바꾼겁니다

이해가시나요?


다른 예제로 가겠습니다

public Vector3 A;
 void Start()
 {

 }
 public override void Interact()
 {
 this.transform.position = A;
 }

벡터3 A를 선언했습니다

벡터3는 위치데이터입니다.

인터렉트 안의 this는

자기 자신 오브젝트를 가르킵니다

this.transform.position은 자신의 위치입니다

거기에 A를 넣죠

즉 A라는 위치로 자기자신을 이동시키는 코드입니다

바로 실행해보겠습니다

비교할 수 있게 위치는 비슷한 곳으로 설정해주세요

재생을 누르고 트리거 인터렉트를 누르면 큐브가 이동 한 것을 알 수 있습니다


다음 예제 가겠습니다

UI에서 텍스트를 눌러주세요

캔버스와 텍스트가 만들어집니다

캔버스를

텍스트를

이렇게 설정해주세요

텍스트 UI가 만들어졌죠?

다음은 큐브의 우동 파일로 가겠습니다

먼저 빨간 줄이 쳐진 곳에

using UnityEngine.UI;

를 넣어주세요.

텍스트를 사용하기 위해 필요합니다

텍스트 A를 선언하고

인터렉트할때

A.text를 안녕하세요로 바꾸는 코드입니다

바로 재생하고 인터렉트 하겠습니다

안된다고요?

A를 연결하는 것을 잊지 않았나 확인해주세요!!

짜잔~~

이번엔 어려운 내용으로 가겠습니다

public override void Interact()
 {
 A.text = this.transform.position.ToString();
 }

자 this.transform.position.ToString()

처음 보는 친구가 나왔지요

일단 this는 기억 나시나요?

this는 자기 자신을 의미합니다

this.transform.position.ToString()

자신.

transform은 위치,회전,크기를 설정하는 컴포넌트입니다

this.transform.position.ToString()

자신.위치회전크기.

position은 그 중 위치를 의미합니다

this.transform.position.ToString()

자신.위치회전크기.위치.

ToString은

String 기억 나시나요? 자료형?

문자열을 의미합니다

To는 문자열로 변환을 의미합니다

즉 포지션은 벡터3로 되어 있는데(숫자)

이를 문자열로 바꿔야 합니다(글자)

문자로 바꾸는 기능은 ToString입니다

this.transform.position.ToString()

자신.위치회전크기.위치.문자로

종합하면

A.text = this.transform.position.ToString();

자기자신의 위치를 문자로 변환한 것

A.text에 넣은겁니다

테스트로 가겠습니다

플레이를 누르시고 인터렉트를 눌러보세여

그 후 씬에서 큐브를 이동시킨 후 한번 더 인터렉트를 눌러보세요

위치 정보가 Text에 뜸을 알 수 있습니다

중요한것은! 포지션은 벡터3 형식이라

( X , Y , Z)로 뜨죠?

이를 문자로 바꿔야 하는것입니다

이번엔 ToString을 썻지만

다음엔

문자를 숫자로 바꾸거나

아니면 ToString이 없는 경우가 있습니다

이를 해결하기 위해서는

“C# 문자열 숫자 형변환”

키워드로 구글링을 하시면 됩니다


다음 예제입니다

public override void Interact()
 {
 Debug.LogError(Networking.LocalPlayer.GetPosition());
 }

을 입력해주세요

테스트를 먼저 해보겠습니다

빌드 앤 테스트로 vrchat 로컬테스트를 열어주세요

그 후 오른쪽 쒸프트 물결 3을 눌러주세요

디버그 로그를 보면

큐브를 클릭할때마다 플레이어의 위치가 뜸을 알 수 있습니다

다시 코드로 가겠습니다

디버그 로그는 생략하겠습니다

Networking.LocalPlayer.GetPosition();

Networking.LocalPlayer 얘는 중요합니다

로컬 플레이어, 즉 자기 자신 플레이어를 의미합니다

로컬 플레이어의 하위 요소들은 중요하니 한번 다 훑어보면 좋습니다

플레이어에 관한 정보(이름, 위치, 텔레포트, 달리기 속도)를 다룰 수 있습니다

Networking.LocalPlayer.GetPosition();

어쨋거나 로컬 플레이어에서 GetPosition()은 포지션을 가져오는 함수입니다.

전 예시처럼 벡터3로 출력되죠

어라 벡터3인데 왜 문자열로 바꾸지 않나요 할 수도 있지만

디버그 로그는 문자열이 아니여도 쓸 수 있습니다(자료형에 상관없이)


이번 강의는 이것으로 끝입니다

각 자료형(벡터, 텍스트, 메쉬렌더러, 메테리얼)마다

각 함수들과 요소들이 있습니다.

아이디어만 있다면 이를 가지고 재미 있는 월드를 만들 수 있겠지요

업데이트: