Unity

[Unity][개념] RequireComponent란?

usingsystem 2022. 8. 22. 15:56
728x90
 

Unity - Scripting API: RequireComponent

When you add a script which uses RequireComponent to a GameObject, the required component will automatically be added to the GameObject. This is useful to avoid setup errors. For example a script might require that a Rigidbody is always added to the same G

docs.unity3d.com

RequireComponent

RequireComponent속성은 요구되는 컴포넌트를 종속성으로 자동으로 추가해줍니다.

 

RequireComponent를 사용하는 스크립트를 GameObject에 추가하면 필요한 component가 GameObject에 자동으로 추가됩니다. 


그래서 RequireComponent는 설정 오류를 방지하는데 유용합니다. 예를 들어 RequireComponent가 있는 스크립트는 Rigidbody가 항상 같은 GameObject에 추가되도록 요구할 수 있습니다. 그래서 이를 통해 자동으로 수행되므로 설정이 잘못 될 수 없습니다. 

 

참고로 RequireComponent는 컴포넌트가 GameObject에 추가되는 순간에만 누락된 종속성을 확인합니다.

게임 오브젝트에 새 종속성이없는 기존 구성 요소 인스턴스에는 이러한 종속성이 자동으로 추가되지 않습니다.

 

요약

 어떤 게임 오브젝트에 RequireComponennt(typeof(Rigidbody))가 있는 스크립트를 추가하면 자동으로 Rigidbody 컴포넌트를 추가해줍니다. Rigidbody가 필요한 GameObject에 리지드바디를 추가해놓지 않았으면 자동으로 추가해주고 에러가 생길 일을 없애줍니다.

 

사용예시 코드

//이것을 붙여주는거임.
[RequireComponent(typeof(Rigidbody))]
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[RequireComponent(typeof(Rigidbody))]
public class RequireTest : MonoBehaviour
{
    Rigidbody rigidbody;

    void Start()
    {
        rigidbody = GetComponent<Rigidbody>();
    }

    // Update is called once per frame
    void Update()
    {
        rigidbody.AddForce(Vector3.up);
    }
}

사용하는 문법은 위와 같습니다. 클래스 위에 RequireComponent가 있는 것이 특징입니다!

 

아래는 결과입니다.

 

결과

<왼쪽 : 스크립트 실행시키기 전, 오른쪽 : 스크립트 실행시킨 후>

왼쪽 사진은 Cube에 Require Test스크립트 컴포넌트를 추가하고 Rigidbody 컴포넌트는 추가되어있지 않은 상태입니다. 이 상태로 실행버튼을 누르게되면 오른쪽 사진처럼 RigidBody 컴포넌트가 자동으로 추가되는 것을 확인할 수 있습니다.

 

 

그리고 Rigidbody컴포넌트를 삭제하려고 하면 이런 식으로 컴포넌트를 지울 수 없다는 경고창을 볼 수 있습니다.

 

큐브가 아래로 떨어지는 모습을 보아하니 스크립트도 문제없이 작동한다는 것을 확인할 수 있습니다.

 

https://artiper.tistory.com/105

728x90