Unity/Tips

Unity 꼭 있어야 할 component는 RequireComponent

최애뎡 2022. 3. 12. 14:26
728x90
반응형

 

https://docs.unity3d.com/kr/530/ScriptReference/RequireComponent.html

 

Unity - 스크립팅 API: RequireComponent

RequireComponent를 사용하는 스크립트를 추가하면, 요구되는 컴포너트가 자동으로 해당 게임오브젝트에 추가됩니다. 설정 오류를 피하는 데 유용합니다. 예를 들어, 리지드 바디가 요구되는 스크립

docs.unity3d.com

사용 중인 프리팹에 꼭 필요한 없어서는 안 될 component를 실수로 제거하지 않도록 도와주는 class

 

간단한 예시로

ScrollRect과 ContentManage.cs 이 두 개의 component만 있는 object가 있을 때

ContentManage.cs에 

#if UNITY_EDITOR
using UnityEditor;
#endif

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

[RequireComponent (typeof(Rigidbody))]
public class ContentManage : MonoBehaviour
{
    [Header("--- 세팅 ---")]
    [SerializeField, Tooltip("GO - 사용 될 content item")]
    GameObject _go_item = null;
    [SerializeField, Tooltip("필요한 item의 amount - 높이 계산에 필요")]
    float _amount = 0;
    [SerializeField, Tooltip("사용 될 ScrollView의 부모 패널 - [ 최대 사이즈(sizeDelta.y)를 알기 위함 ]")]
    RectTransform _RTR_parentView = null;
    [SerializeField, Tooltip("RectTransform - content")]
    RectTransform _RTR_content = null;
    [SerializeField, Tooltip("GridLayoutGroup - Init시 여러 계산에 필요")]
    GridLayoutGroup _GLG_content = null;
    [SerializeField, Tooltip("ContentSizeFitter - 아이템 생성 후 enabled false")]
    ContentSizeFitter _CSF_content = null;

이런 식으로 class 위에 RequireComponent로 Rigidbody를 선언해두면

이런 식으로 Rigidbody component가 없다고 경고를 준 뒤 자동으로 생성해주며

Rigidbody를 제거하려고 하면 지울 수 없다는 팝업을 띄우며 제거를 방지해줌

 

* 간혹 재사용할 프리팹들을 만들 때 추후 까먹지 않기 위해 사용하기 좋음

반응형