[RequireComponent(type())]


보통 GetComponent는 대부분 자기 자신의 컴포넌트 중 하나를 가져와 사용한다.


자신에 부착돼있는 컴포넌트를 가져와 사용하려면 기본적으로, 다음과 같이 호출한다.


Rigidbody rigid = GetComponent<Rigidbody>();


보통 이런 목적으로 사용할 때는 Awake나 Start에서 미리 선언한 뒤 사용한다. 


하지만 Rigidbody 컴포넌트의 존재를 보장하지 않는다. 


무슨말이냐면, 실수로 Rigidbody를 게임오브젝트에서 지웠다면 null이 되어 실행 시, 문제가 발생된다.


그래서 엄격히 컴포넌트의 존재를 보장하고 싶을 때 RequireComponent를 사용한다.


사용방법은 다음과 같다. 클래스보다 위에 쓴다는 점. 명심하자.



[RequireComponent(typeof(Rigidbody))]
[RequireComponent(typeof(Collider))]

public class Bullet : MonoBehaviour
{



제법 깔끔하기도 하고 자주 사용하는 방법이다.


이렇게 되면, 이 게임오브젝트는 반드시 Rigidbody와 Collider를 갖고 있어야 한다는 의미이다.


따라서, 위 두 컴포넌트는 삭제할 수 없다. Delete해봐라. 그럼 아래와 같은 창을 볼 수 있다.



Bullet 스크립트가 Box Collide를 요구하고 있기때문에, 이것은 삭제할 수 없게 되므로 에러 발생 확률이 적어진다.






이렇게 인스펙터와 관련된 기능이 많다.



Posted by sungho88
,