유니티는 기본적으로 인스펙터창에서 변수들을 컨트롤 할 수 있게 되어있다.
하지만 일반적으로, public float speed
처럼 사용했을때는,
이런식으로 숫자를 직접 설정할수 있게 된다.
하지만 일정 범위내에서만 값을 조정하고 싶다면 Range어트리뷰트를 쓰면 된다.
코드를 다음과 같이 바꿔주고 [Range(0, 12)] [SerializeField] private float speed;
인스펙터창을 보면
이렇게 바뀐다.
헤더는 인스펙터창에 제목을 만들고 싶을대 사용한다.
위의 예제를 보면, NewBehaviourScript에는 script와 speed항목만 존재한다.
하지만 저게 무슨 speed변수인지 자세하게 설명해주고 싶을때
[Header("PlayerMoveSpeed")]
이런 코드를 추가해주고, 인스펙터를 보면
이렇게 제목이 생성되어 있는것을 볼 수 있다.
트레일 렌더러는 충돌체가 이동하는 장면에서 충돌체가 이동하는 궤적을 만드는데 사용된다.
이런식으로 효과를 다양하게 줄 수 있다.
자세한건, 직접 사용해보며 익히는것이 좋겠다.
가장 기본이 되는 몇개만 살펴보자.
- Time : 얼마나 오래동안 trail을 유지할거냐
- Width : Trail을 시간에따라 어떻게 변화시킬거냐.. fadeout효과 가능
- Min Vertix Distance : Trail을 어느 구간마다 찍을거냐..
값을 높이면, 곡선보단 직선형태가 되기 시작한다- AutoDestruct : 일정시간동안 움직이지 않으면 TrailRenderer가진 오브젝트 파괴
- Emitting : Trail을 만드냐
보통 컴포넌트 참조를 할때 GetComponent<>
를 사용한다
하지만 부모오브젝트에서 자식오브젝트의 컴포넌트를 찾고싶으면..?
find
findWithTag
GetComponentInChildren
GetComponentsInChildren
등 여러가지가 있지만, 오늘은 GetComponentInChildren을 위주로 살펴볼 예정이다.
find계열 함수는 되도록이면 사용하지말자.
최적화부분에서 상당한 패널티가 있어, 현업에서는 사용하지 않는다고 한다.
다시 본론으로 돌아와서 GetComponentInChildren를 살펴보겠다
기본적으로 GetComponentInChildren
를 사용하면 해당 코드를 가진 스크립트를 가진 오브젝트의 자식객체중 가장 첫번째로 존재하는 해당 컴포넌트를 반환해준다.
GetComponentsInChildren는 자식오브젝트 전부의 해당 컴포넌트를 반환시킨다.
2~3개가 넘어갈수도 있다.
이때 반환값은 Array형태로 반환된다