Unity 매뉴얼: 스크립팅 API

Unity의 스크립팅 API는 2D 게임 개발에 유용한 도구들로, 특히 타일맵을 생성하고 관리하는 데 매우 유용합니다. 다음은 주요 클래스와 메서드에 대한 설명입니다.

GridBrushEditorBase 클래스

GridBrushEditorBase 클래스는 새로운 브러시 에디터를 만들 때 기본 클래스 역할을 하며, 이로부터 다른 모든 브러시 에디터가 확장됩니다. 이 클래스는 주로 팔레트 창에서 인스펙터를 그리거나 씬 뷰에서 기즈모를 그릴 때 사용됩니다.

주요 메서드

메서드 설명
public virtual GameObject[] validTargets 브러시로 색칠할 대상이 되는 게임 오브젝트의 목록을 반환합니다. 이 목록은 팔레트 창의 드롭다운에 표시됩니다. 이 메서드를 오버라이드하여 원하는 타겟 목록을 만들 수 있습니다.
public virtual void OnPaintInspectorGUI() 브러시 옵션을 편집할 수 있는 인스펙터를 표시합니다. 씬 뷰에서 브러시 기능을 업데이트할 때 사용할 수 있습니다.
public virtual void OnSelectionInspectorGUI() 타겟 그리드에서 셀이 선택되었을 때 사용되는 인스펙터를 표시합니다. 선택된 셀에 대한 커스텀 인스펙터 뷰를 표시하기 위해 이 메서드를 오버라이드할 수 있습니다.
public virtual void OnPaintSceneGUI(GridLayout grid, GameObject brushTarget, BoundsInt position, GridBrushBase.Tool tool, bool executing) 씬 뷰에 추가 기즈모를 그릴 때 사용되는 메서드입니다. 현재 선택된 도구를 기준으로 브러시의 기능을 실행할 수 있습니다.

활용 예제

1. 기본 브러시 제작

아래는 기본 브러시를 만드는 간단한 예제입니다.

using UnityEngine;
using UnityEditor;

public class MyCustomBrush : GridBrushEditorBase
{
    public override GameObject[] validTargets
    {
        get { return new GameObject[] { /* 대상 게임 오브젝트들 */ }; }
    }

    public override void OnPaintInspectorGUI()
    {
        // 여기에서 인스펙터 GUI를 정의합니다.
    }

    public override void OnSelectionInspectorGUI()
    {
        // 선택된 셀에 대한 커스텀 인스펙터 뷰를 구현합니다.
    }

    public override void OnPaintSceneGUI(GridLayout grid, GameObject brushTarget, BoundsInt position, GridBrushBase.Tool tool, bool executing)
    {
        // 기즈모와 브러시 기능을 구현합니다.
    }
}

2. 특정 타겟 지정

특정 게임 오브젝트만 색칠할 수 있도록 필터링 제어를 추가할 수 있습니다.

public override GameObject[] validTargets
{
    get { return FindObjectsOfType<MySpecificType>().Select(obj => obj.gameObject).ToArray(); }
}

3. 사용자 입력 받아들이기

인스펙터에서 사용자의 입력을 받아들이고, 이를 바탕으로 색칠 도구의 색이나 스타일을 변경할 수 있습니다.

private Color selectedColor = Color.white;

public override void OnPaintInspectorGUI()
{
    selectedColor = EditorGUILayout.ColorField("선택된 색상", selectedColor);
}

결론

타일맵 시스템과 GridBrushEditorBase 클래스를 활용하면 사용자 맞춤형 타일 맵 브러시를 쉽게 만들 수 있습니다. Unity의 API를 통해 게임 개발의 가능성을 한층 더 넓혀보세요.