[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를 요구하고 있기때문에, 이것은 삭제할 수 없게 되므로 에러 발생 확률이 적어진다.
'개발 > Unity & C#' 카테고리의 다른 글
node.js와 socket.io를 이용해서 채팅 기능 구현하는 방법... (0) | 2018.06.04 |
---|---|
[유니티] 유니티 네트워크(Unet) 사용 - 05) NetworkBehaviour (0) | 2018.05.30 |
[유니티] 유니티 네트워크(Unet) 사용 - 04) NetworkTransform와 NetworkTransformChild (0) | 2018.05.29 |
[유니티] 유니티 네트워크(Unet) 사용 - 03) NetworkIdentity (0) | 2018.05.29 |
[유니티] 유니티 네트워크(Unet) 사용 - 02) NetworkManager (0) | 2018.05.29 |