2.3 유니티 변수
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인데 왜 문자열로 바꾸지 않나요 할 수도 있지만
디버그 로그는 문자열이 아니여도 쓸 수 있습니다(자료형에 상관없이)
이번 강의는 이것으로 끝입니다
각 자료형(벡터, 텍스트, 메쉬렌더러, 메테리얼)마다
각 함수들과 요소들이 있습니다.
아이디어만 있다면 이를 가지고 재미 있는 월드를 만들 수 있겠지요