public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
        {
            if (EditorHelper.CheckDuplicatedAttribute <DropDownAttributeBase>(fieldInfo))
            {
                EditorGUI.HelpBox(position, "DropDownAttribute는 중복 사용될 수 없습니다",
                                  MessageType.Error);
                return;
            }

            if (!property.propertyType.Equals(SerializedPropertyType.String))
            {
                string strErr = "[TagDropDownAttribute] string 타입에만 적용할 수 있습니다.";

                EditorGUI.PropertyField(position, property, label, true);
                EditorGUILayout.HelpBox(strErr, MessageType.Error);
                Debug.LogError(strErr);
                return;
            }

            float ratio      = 0.4f;
            float widthLeft  = position.width * ratio;
            float widthRight = position.width * (1 - ratio);

            Rect rectLeft  = new Rect(position.x, position.y, widthLeft, position.height);
            Rect rectRight = new Rect(position.x + widthLeft, position.y, widthRight, position.height);

            // 1. 좌측 레이블 그리기
            EditorGUI.LabelField(rectLeft, label);

            // 2. 우측 팝업 그리기
            property.stringValue = EditorGUI.TagField(rectRight, property.stringValue);
        }
        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
        {
            if (EditorHelper.CheckDuplicatedAttribute <DropDownAttributeBase>(fieldInfo))
            {
                EditorGUI.HelpBox(position, "DropDownAttribute는 중복 사용될 수 없습니다", MessageType.Error);
                return;
            }

            if (!property.propertyType.Equals(SerializedPropertyType.Integer) &&
                !property.propertyType.Equals(SerializedPropertyType.String))
            {
                string strErr = "[LayerDropDownAttribute] int 또는 string 타입에만 적용할 수 있습니다.";

                EditorGUI.PropertyField(position, property, label, true);
                EditorGUILayout.HelpBox(strErr, MessageType.Error);
                Debug.LogError(strErr);
                return;
            }

            float ratio      = 0.4f;
            float widthLeft  = position.width * ratio;
            float widthRight = position.width * (1 - ratio);

            Rect rectLeft  = new Rect(position.x, position.y, widthLeft, position.height);
            Rect rectRight = new Rect(position.x + widthLeft, position.y, widthRight, position.height);

            // 1. 좌측 레이블 그리기
            EditorGUI.LabelField(rectLeft, label);

            // 2. 우측 팝업 그리기 + 값 할당
            switch (property.propertyType)
            {
            case SerializedPropertyType.Integer:
                property.intValue = EditorGUI.LayerField(rectRight, property.intValue);;
                break;

            case SerializedPropertyType.String:
                int layerIndex = LayerMask.NameToLayer(property.stringValue);
                property.stringValue = LayerMask.LayerToName(EditorGUI.LayerField(rectRight, layerIndex));
                break;
            }
        }