본문 바로가기
개발/Unity

유니티 Attribute - Requirecomponent로 Component 강제 설정하기

by 피로물든딸기 2022. 3. 17.
반응형

Unity 전체 링크

 

더블 클릭의 경우 OnMouseUp으로 구현하였기 때문에

해당 스크립트를 Component로 가지는 오브젝트는 반드시 콜라이더가 필요하다.

 

하지만 테스트 도중 실수로 collider를 지우거나 collider가 애초에 없는 경우가 있다.

이런 케이스에서는 당연히 collider가 있다고 착각하기 쉽기 때문에 디버깅이 어려울 수 있다.

 

Requirecomponent를 이용하면 필요한 Component를 강제할 수 있다.

아래는 DoubleClickTest에서 콜라이더를 강제한다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[RequireComponent(typeof(Collider))]
public class DoubleClickTest : MonoBehaviour
{
    float interval = 0.25f;
    float doubleClickedTime = -1.0f;
    //bool isDoubleClicked = false;

    public GameObject player;

    private void OnMouseUp()
    {
        if((Time.time - doubleClickedTime) < interval)
        {
            //isDoubleClicked = true;
            doubleClickedTime = -1.0f;
            
        }
        else
        {
            //isDoubleClicked = false;
            doubleClickedTime = Time.time;
        }
    }
}

 

아래와 같이 콜라이더가 없는 큐브에 스크립트를 추가하면 failed 처리되는 것을 알 수 있다.

 

반대로, 콜라이더가 있는 오브젝트에서 스크립트를 제거하면 아래와 같은 에러가 발생한다.

 

두 개 이상의 컴포넌트가 필요하다면 아래와 같이 추가하면 된다.

[RequireComponent(typeof(BoxCollider))]
[RequireComponent(typeof(Rigidbody))]
public class DoubleClickTest : MonoBehaviour

//or

[RequireComponent(typeof(BoxCollider), typeof(Rigidbody))]
public class DoubleClickTest : MonoBehaviour

 

Unity Plus:

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

Unity Pro:

 

Unity Pro

The complete solutions for professionals to create and operate.

unity.com

 

Unity 프리미엄 학습:

 

Unity Learn

Advance your Unity skills with live sessions and over 750 hours of on-demand learning content designed for creators at every skill level.

unity.com

반응형

댓글