Custom Editor

스크립트가 기능을 하는지 확인하기 위해 
void Start(), Update()나 상호작용을 통해 스크립트를 실행하여 확인했습니다.


크게 불편하지 않았지만 이번에 맵 오브젝트를 생성하며  0.8 X 0.8의 타일을 수작업으로 생성하다가 
20개를 만들 때, 이건 아니다 싶어 유니티의 기능을 찾아보고 정리하게 되었습니다.

 

 

여기서도 예시로 타일 설치로 해보겠습니다.

1.스크립트 준비 

우선 타일을 자동 생성하는 스크립트를 작성합니다. ( ObjectPlacer.cs )

 

using UnityEngine;

public class ObjectPlacer : MonoBehaviour
{
    public GameObject objectToPlace; // 배치할 오브젝트의 프리팹
    public int numberOfObjects = 10; // 생성할 오브젝트 수
    public float spacing = 0.8f; // 오브젝트 간의 간격

    // 이 메서드를 호출하여 오브젝트 배치 시작
    public void PlaceObjects()
    {
        // spacing 간격으로 세로 추가
        for (int i = 0; i < numberOfObjects; i++)
        {
            // 새 오브젝트의 위치 계산
            Vector3 position = new Vector3(0, i * spacing, 0);

            // 오브젝트 인스턴스화 및 배치
            GameObject newObject = Instantiate(objectToPlace, position, Quaternion.identity);
            newObject.transform.parent = this.transform; 
        }
    }
}

 

2. 스크립트 할당

 

 

스크립트를 배치하고자 하는 오브젝트(예: 빈 게임 오브젝트)에 할당합니다.

그 다음 인스펙터에서 Object To Place 필드에 배치할 오브젝트의 프리팹을 드래그합니다.

 

3.커스텀 에디터 스크립트 사용하기

Unity 에디터에서 Assets/Editor 폴더 내에 새 C# 스크립트를 생성합니다. 폴더가 없다면 만들어주세요. 스크립트의 이름을 ObjectPlacerEditor.cs 같은 것으로 지정합니다.

 

아래의 커스텀 에디터 스크립트 코드를 ObjectPlacerEditor.cs 파일에 복사합니다.

 

 

using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(ObjectPlacer))]
public class ObjectPlacerEditor : Editor
{
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector(); // 기본 인스펙터 UI를 그리기

        ObjectPlacer script = (ObjectPlacer)target; // 현재 인스펙터의 대상 스크립트를 가져옴

        // 버튼 UI 추가
        if (GUILayout.Button("Place Objects"))
        {
            script.PlaceObjects(); // 버튼 클릭 시 PlaceObjects 메서드 실행
        }
    }
}

 

 

이 스크립트는 ObjectPlacer 타입의 오브젝트에 대해 커스텀 인스펙터를 생성하고, "Place Objects"라는 버튼을 인스펙터에 추가합니다. 이 버튼을 클릭하면 PlaceObjects 메서드가 실행됩니다. 

 

4. 실행하기

 

이제 유니티로 돌아가서 ObjectPlacer.cs를 컴포넌트로 가지고 있던 오브젝트를 클릭해 봅시다.

 

Place Objects 버튼이 추가되었다.

Place Objects 버튼을 누르면 ObjectPlacer.cs의 PlaceObjects 함수가 실행되는 것을 확인해 보겠습니다.

 

 

이상으로 간단한 커스텀에디터 사용법을 마무리하겠습니다!

'Unity > 공부' 카테고리의 다른 글

[Unity] Text Mesh Pro 한글 폰트 사용하기  (0) 2024.03.04
[Unity] 폴리 브러쉬(Polybrush)  (1) 2023.11.21

유니티를 실행하고 UI - Text를 생성하고 한글을 넣으면 바로 ㅁㅁㅁ로 나와서 처음 사용할 때 
당황하는 사람들이 많아서 간단하게 사용 방법을 정리했습니다.

 

새로운 프로젝트에서 한글을 사용한 경우

 

1. 폰트 다운로드 받기 

 

아무 폰트나 다운받게 되면 문제가 생길 수 있으니 배포하는 폰트의 약관을 잘 읽어보고 사용해야 합니다.
메이플스토리 폰트는 규정을 준수한다면  모두가 사용할 수 있게 열려있으니 ,  사용 조건 및 지적 재산권을 한번 읽어보시고 사용하시면 됩니다 

 

https://maplestory.nexon.com/Media/Font

 

서체 | 미디어 | 메이플스토리

 

maplestory.nexon.com

 

 

 

저는 윈도우를 사용하니 TTF 윈도우용을 다운로드 받겠습니다.

 

 

 

다운로드 완료 후 프로젝트 내에 넣어주시면 다음과 같이 로드됩니다.

 

 

2. 폰트 적용하기 

 

유니티 상단의 메뉴바에서 Window - Text Mesh Pro - Font Asset Creator를 열어줍니다.

 

 

 

사용하실 폰트를 선택하고 파란색으로 표시된 Save를 눌러주면 유니티에서 사용 가능한 형태로 폰트가 생성됩니다.

 

1. 생성된 폰트를 클릭한 뒤 Inspector 탭에서 Atlas Population Mode를 Static에서 Dynamic으로 변경해줍니다 .

2. Sampling Point Size 는 60정도로 설정해줍니다.

 

폰트 변경 후 Scene 뷰에서 적용 확인 

 

한글이 깨지는 UI로 가서 Font Asset을 생성했던 폰트로 바꿔주면 바로 적용 된 것을 확인 가능합니다!

 

'Unity > 공부' 카테고리의 다른 글

[Unity] CustomEditor 에디터에서 스크립트 실행하기  (0) 2024.03.05
[Unity] 폴리 브러쉬(Polybrush)  (1) 2023.11.21

유니티의 폴리 브러쉬(Polybrush)는 3D 모델에 직접 조각하거나 텍스처를 적용하는 등의 작업을 할 수 있는  툴입니다. 이 도구를 사용하면 유니티 내에서 직접 모델의 형태를 변경하거나 표면에 다양한 효과를 적용할 수 있어, 레벨 디자인과 세부 조정에 매우 유용합니다.

 

주요 기능 

 

1.조각(Sculpting)

3D 모델의 형태를 직접 조각할 수 있습니다.

예를 들어, 지형을 조정하거나 모델에 돌출부나 오목한 부분을 만들 수 있습니다.


2.텍스처 적용(Texture Painting)

모델의 특정 부분에 다양한 텍스처를 적용할 수 있습니다.

이는 복잡한 텍스처 작업을 유니티 내에서 직접 처리할 수 있게 해줍니다.


3.정점 색상(Vertex Coloring)

모델의 정점에 색상을 적용하여 더욱 풍부한 시각적 효과를 낼 수 있습니다.


4.브러쉬 설정

다양한 브러쉬 설정을 통해 조각, 텍스처 적용, 정점 색상 작업의 세밀함을 조절할 수 있습니다.

 

! 사용전 주의사항 !


폴리 브러쉬는 모델의 메시를 직접 변경하기 때문에, 작업 전에는 반드시 모델을 백업하는 것이 좋습니다.
복잡한 모델에 폴리 브러쉬를 사용할 때는 성능에 영향을 줄 수 있으므로, 최적화를 고려해야 합니다.

 

 

 

사용 하기 

 

 

1. 설치하기 

 

1. 유니티에서 Window - Package Manager를 열어줍니다.

2. Packages : In Project로 설정되어 있는데  Unity Registry로 변경하여 줍니다.

3. 검색창에 Polybrush를 검색하고 Install을 눌러주면 설치까지는 완료 됩니다.

 

 

 

설치가 완료되셨다면, 위 사진을 참고하여 Tool - Polybrush - Polybrush Window를 눌러 Polybrush 탭을 열어줍시다 !

 

 

 

Brush Setting 

본인이 커스텀 한 brush를 세이브로 저장하고 언제든 불러 올 수 있습니다.

 

Outer Radius

 

브러쉬의 전체 크기를 결정합니다. 

즉, 브러쉬가 영향을 미칠 수 있는 최대 범위를 나타냅니다. 

Outer Radius가 크면 브러쉬는 더 넓은 영역에 영향을 미칩니다.

 

Inner Radius 

 

브러쉬의 중심 부분에서 가장 강력한 영향을 미치는 영역의 크기를 결정합니다.

Inner Radius가 작으면 브러쉬의 중심 부분에서 더 강한 효과를 볼 수 있으며, 반대로 크면 더 부드러운 효과를 얻을 수 있습니다.

 

Strength 

 

브러쉬의 강도를 결정합니다. 

이 값이 높을수록 브러쉬를 적용할 때 변화가 더 뚜렷하고 빠르게 나타납니다. 

예를 들어, 조각 작업에서는 더 깊은 자국을 남길 수 있고, 텍스처 적용에서는 색상이 더 강하게 드러납니다.

 

Falloff Curve 

 

브러쉬의 중심에서 외곽으로 갈수록 효과가 어떻게 감소하는지를 나타내는 곡선입니다. 

Falloff Curve를 조절하면 브러쉬의 영향력이 중심에서부터 바깥쪽으로 어떻게 줄어드는지를 세밀하게 제어할 수 있습니다. 부드러운 경사를 만들기 위해 완만한 곡선을 사용할 수도 있고, 더 갑작스러운 변화를 위해 가파른 곡선을 설정할 수도 있습니다.

 

 

 

다음으로 Polybrush의 5가지 탭에 대해서 알아보겠습니다.

 

왼쪽부터 순서대로 알아보죠

 

1. Sculpt  on meshes

 

3D 모델의 메시(mesh)를 직접 조작하여 형태를 변경하는 과정입니다. 

이 기능은 브러시를 사용하여 모델의 표면을 추가하거나 제거하고, 모양을 매끄럽게 하거나, 특정 특징을 강조하는 데 사용됩니다.

 

2. smooth mesh geometry

 

 3D 모델의 메시를 부드럽게 다듬어서 더 매끄럽고 자연스러운 형태로 만드는 데 사용됩니다. 

이 기능은 모델링 과정에서 생긴 날카로운 모서리나 거친 표면을 부드럽게 처리하는 데 특히 유용합니다.

 

3. paint vertex colors on meshes

 

메시의 각 정점(vertex)에 색상을 적용하는 과정입니다. 

이 기능은 복잡한 텍스처 맵핑 없이도 모델에 시각적인 변화를 줄 수 있으며, 각 정점의 색상 정보를 사용하여 다양한 시각적 효과를 만들어낼 수 있습니다.

 

4. scatter prefab on meshes

 

특정한 3D 모델(프리팹)을 메시 위에 무작위로 배치하는 기능입니다. 이는 환경 구성, 특히 자연 환경에서 나무, 돌, 식물 등을 실감나게 배치할 때 매우 유용합니다.

 

5. Paint texture on meshes

 

3D 모델의 표면에 직접 텍스처를 적용하는 것을 가능하게 합니다. 

이 기능은 유니티 에디터 내에서 캔버스에 그림을 그리듯이 모델에 텍스처를 칠하는 작업을 포함합니다.

+ Recent posts