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

+ Recent posts