개발 관련/Unity

[Unity] transform.position, SerializeField, Destroy

magpiebros 2023. 4. 2. 22:16
반응형

안녕하세요 맥파이입니다.
하고 싶은게 많아서 이것저것 만지작 거리는데, 유니티는 아주 오래전부터 관심을 가지고
공부를 하다가도 잠깐 놓게 되면 다시 만지기가 쉽지 않은 언어였습니다.
맥으로하기에도 좀 무겁고, 맥에서는 버그도 많아서... 자동완성이 안된다거나 등등

몇달전에 다시 열심히 하다가.. 또 놓았다가 다시 시작하는데
매번 볼때마다 새롭게 느껴지네요 ㅋㅋ

그래서 이번엔 정리하면서 익혀보는 중입니다.
저처럼 가끔씩 경제적 자유를 꿈꾸며. '언젠가는 멋진 게임을 만들어서 부자가 될꺼야'라고
꿈을 꾸는 분들은 이 글들이 도움이 될수도 있겠죠 

 

transform.position

일단 위치를 설정하는 소스입니다.
아래 코드는 카메라 포지션을 달아주는 코드였고, person은 gameObject로 주인공을 나타냅니다.

transform.position = person.transform.position + new Vector3(0,0,-10);

결론적으로 주인공의 transform에서 position을 가지고 와서 Vector3(0, 0, -10)만큼 합한 position을 저장한다는 의미입니다.
이게 무슨 말일까요?

주인공의 포지션에 카메라가 지켜볼수 있도록 z축으로 -10만큼 떨어진 position을 구한다.
그리고 이 포지션은 카메라의 position이다라는 의미입니다.

즉, 주인공을 따라가면서 카메라 위치를 잡아주어라라는 의미입니다.
주인공의 포지션에 카메라 시점을 더해서 실시간으로 업데이트를 진행해주면, 카메라가 주인공을 따라다니게 되겠지요?

 

SerializeField

SerializeField를 알아봅시다. 
특정 변수를 시리얼라이즈하여 별도의 컴파일 없이 툴에서 바로 적용하여 테스트 할수 있다.
뭔말인지 모르겠지요? 코드를 먼저 보시죠.

[SerializeField]
private float destroyTime = 0.5f;

 

지금은 윈도우 피씨라 해당 화면을 캡쳐하긴 어렵네요.
유니티를 사용함에 따라 특정 코드값을 수정하며, 테스트하기가 힘듭니다.
2022년 맥북프로임에도 불구하고, 한번 테스트를 하려고 run 시키면, 맥북프로는 제트기로 변신을 합니다.

"슈우우------------------------웅, 위이이이이------------------잉"
 

이런경우에 우리는 SerializeField를 선언하고 개발툴 컴포넌트쪽에 해당 변수를 수정가능하도록 활성화 시킬수 있습니다.

 

Destroy

gameObject를 삭제해버리는 방법은 아래와 같습니다.

Destroy(other.gameObject, destroyTime
 
유니티의 객체들은 gameObject로 이루어져있는데요(제가 지금까지 공부한 것들은...), 다른 객체도 존재하겠지만요.
위 Destroy함수를 통해서 제거할수가 있습니다.
제거는 뭐 굳이 설명할 필요가 없을것 같습니다.
 
 
 
오늘은 여기까지가 학습내용입니다.
다음에 학습할 내용은 유니티 라이프사이클인데요, 언제 할지는 잘 모르겠어요. 

링크로 사전 예고를 미리 합니다.

https://docs.unity3d.com/Manual/ExecutionOrder.html

 

Unity - Manual: Order of execution for event functions

Instantiating Prefabs at run time Order of execution for event functions Running a Unity script executes a number of event functions in a predetermined order. This page describes those event functions and explains how they fit into the execution sequence.

docs.unity3d.com

 

바로 한다는건 아니에요...
하고 싶은거 할껍니다.

또 만나요!!

반응형