먼저, 커스텀 에디터를 제작하게 된 이유는 게임을 테스트하는 과정에서 시간이 오래걸리는 작업의 속도를 올리기 위해서이다.
예를 들어, RPG 장르의 게임인 경우에 레벨을 올리는데 많은 시간이 필요하다. 이때, 커스텀 에디터를 제작하여 테스트를 위한 커스텀 창을 만들어 레벨 업 버튼 누르면 클릭 한 번에 레벨 업이 되는 것이다.
이렇게 나는 커스텀 에디터를 게임 테스트에 필요한 기능을 위해 제작해보았다.
using UnityEditor;
using UnityEngine;
public class EditorTool : EditorWindow
{
}
[MenuItem("Tools/EditorTool")]
public static void ShowWindow()
{
GetWindow<EditorTool>("EditorTool");
}
메뉴에 있는 Tools -> EditorTool을 클릭하면 창이 열린다.

private void OnGUI()
{
}
GUILayout을 활용하여 간단한 버튼을 만들어 사용하였다.
private void OnGUI()
{
// 플레이어
GUILayout.Label("Player", EditorStyles.boldLabel);
if (GUILayout.Button("Level Up"))
{
if(Player != null)
{
Player.LevelUp();
}
else
{
Debug.LogWarning("Player를 찾을 수 없습니다!");
}
}
if (GUILayout.Button("Full Heal"))
{
if (Player != null)
{
Player.FullHeal();
}
else
{
Debug.LogWarning("Player를 찾을 수 없습니다!");
}
}
_invincibility = GUILayout.Toggle(_invincibility, "Invincibility");
if (Player != null)
{
Player._isInvincible = _invincibility;
}
// 곡괭이
GUILayout.Space(_space);
GUILayout.Label("Pickaxe", EditorStyles.boldLabel);
if (GUILayout.Button("Level Up"))
{
if(GM.NowPlayerData.PickaxeLV + 1 <= (int)PickaxeID.End - 1)
{
GM.NowPlayerData.PickaxeLV++;
Inventory.UpdatePickaxeUI();
PickAxeController.UpdateSpriteByLevel();
}
}
}
레벨 업, 완전 회복, 무적, 곡괭이 레벨 업 기능을 만들었다.

기본적으로 GUILayout은 너비와 높이, 위치를 자동으로 정렬해준다.