[Unity] 에디터 프로그래밍 – 한글폰트 적용하기
에디터 윈도우를 하나 띄워보고, 간단한 레이블을 추가해보자. AEditorWindow.cs를 만들어, Editor 폴더 안에 위치시키는 것으로 시작할 수 있다. (Editor 폴더는 스페셜 폴더로서 Editor 나 EditorWindow를 상속받은 스크립트는 이 폴더 아래에 위치해야 한다.)

AEditorWindow.cs에 기본 골격을 갖추기 위해 Init, OnEnable, OnDisable, OnGUI을 추가하였다.
using UnityEngine;
using UnityEditor;
public class AEditorWindow : EditorWindow
{
[MenuItem("Tools/My Editor Window")]
static void Init()
{
EditorWindow.GetWindow(typeof(AEditorWindow)).Show();
}
protected void OnEnable()
{
}
protected void OnDisable()
{
}
private void OnGUI()
{
}
}
컴파일이 잘 되었다면, 유니티 탑 메뉴에서 Tools 아래에 My Editor Window를 선택하여 창을 띄울 수 있다.

OnEnable과 OnDisable을 기본적으로 추가한 이유는 스크립트의 초기화하는 부분과 정리 하는 부분을 각각 처리하기 위함이고, 여기가 (내가 보기엔) 현재로선 가장 좋은 위치이다.
이제 레이블을 추가해보고, 폰트가 참을만 한지 한번 생각해보자.

이 에디터 툴이 일부 개발자들만 쓰는 경우라면 폰트는 크게 상관이 없을 수 있다. 하지만 툴의 사용자가 소수 개발 집단 이상일 경우는 룩앤필이 어느정도 필요할 것이다. 어쨌든 폰트가 나름 괜찮다면, 여기서 return; 해도 좋다. 🙂
무료 폰트를 찾아 다운받아 보았다. 고도체를 받아 ttf 파일을 유니티 프로젝트에 옮겨 놓았다.

새로운 폰트를 GUI에서 표현하기 위해서는 새로운 GUI skin을 만들어야 한다. 프로젝트 뷰에 우클릭 하여 GUI skin을 만들자.

원하는 이름을 지은 후, 클릭하여 내용을 살펴보자.

제일 위에 Font를 세팅할 수 있는데, 아까 다운 받아 놓은 GogoM.ttf를 연결하여, MySkin이 GodoM 폰트를 사용하도록 만들자. 그럼 이제 코드에서 MySkin을 로드하고 고도체를 사용할 수 있다.
OnEnable에서 Resources아래에 있는 MySkin 파일을 로드하고, 새로 GUIStyle을 만들어 MySkin에 있는 폰트를 세팅한다.
public class AEditorWindow : EditorWindow { private GUISkin myskin = null; [MenuItem("Tools/My Editor Window")] static void Init() { EditorWindow.GetWindow(typeof(AEditorWindow)).Show(); } protected void OnEnable() { myskin = Resources.Load("MySkin"); //MySkin 파일 로드 } protected void OnDisable() { } private void OnGUI() { var lbstyle = new GUIStyle(); lbstyle.font = myskin.font; //고도체 적용 GUILayout.Label("가나다라마바사아", lbstyle); GUILayout.Label("안녕하세요", lbstyle); GUILayout.Label("좋은 아침!", lbstyle); } }
컴파일이 잘 되었다면, 고도체 폰트가 잘 적용 되었을 것이다.

폰트 색이 검은 색이라 당황스럽지만, 새로 만든 GUIStyle을 통해 다양한 스타일을 적용할 수 있다.
private void OnGUI() { var lbstyle = new GUIStyle(); lbstyle.font = myskin.font; lbstyle.normal.textColor = Color.white; //글자 색을 하얀색으로. GUILayout.Label("가나다라마바사아", lbstyle); GUILayout.Label("안녕하세요", lbstyle); GUILayout.Label("좋은 아침!", lbstyle); }

레이블 사이에 여유공간을 좀 넣어주면, 더 정갈해 보일 것 같아 패딩을 적용해보았다.
private void OnGUI() { var lbstyle = new GUIStyle(); lbstyle.font = myskin.font; lbstyle.normal.textColor = Color.white; lbstyle.padding.left = 5; lbstyle.padding.top = 5; lbstyle.padding.bottom = 5; GUILayout.Label("가나다라마바사아", lbstyle); GUILayout.Label("안녕하세요", lbstyle); GUILayout.Label("좋은 아침!", lbstyle); }

예쁜 한글 폰트로 바꾸니 기분도 좋아지고, 깔끔해 보인다. 🙂