커스텀 에디터는 시작하기 전에 익혀야할 내용들이 너무 많다. 어떻게 구현할 지 설계하기전에 대략적으로 어떤 내용들이 있는 지 살펴보는 것이 유용하다.
이번에는 CustomEditor의 기능 중 인스펙터창을 커스터마이징 해보려고한다.
이에 앞서 EditorGUILayout을 익혀보자.
Editor/MyItemEditor.cs
Editor폴더에 MyItemEditor 스크립트를 만들어보자. 이 에디터 스크립트의 목적은 MyItem이라는 스크림의 인스펙터 에디터를 마음대로 꾸며보는 것이다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
//MyItem 스크립트의 에디터를 커스터마이징한다.
[CustomEditor(typeof(MyItem))]
//여러 오브젝트를 선택했을 때 수정가능
[CanEditMultipleObjects]
public class MyItemEditor : Editor {
//오브젝트를 불러올 때 실행된다.
void OnEnable(){
}
//Inspector GUI를 오버라이딩
public override void OnInspectorGUI ()
{
//기존 GUI를 유지한다.
//base.OnInspectorGUI ();
EditorGUILayout.ColorField ("Color Field", Color.white);
EditorGUILayout.CurveField ("AnimationCurve Field", AnimationCurve.Linear (0, 3, 5, 5));
EditorGUILayout.DelayedDoubleField ("DelayedDouble Field", 500);
EditorGUILayout.HelpBox ("The helpbox", MessageType.Info);
EditorGUILayout.IntField ("Int Field", 5);
EditorGUILayout.Knob (new Vector2 (30f, 30f), 50f, 20f, 80f, "Knob", Color.black, Color.gray, true);
EditorGUILayout.LabelField ("Label Field", "my label");
EditorGUILayout.LayerField ("Layer Field", 0);
EditorGUILayout.ObjectField ("Object Field", null, typeof(Sprite), true);
EditorGUILayout.PasswordField ("Password Field", "mypassword");
EditorGUILayout.Separator ();
EditorGUILayout.Slider ("Slider", 20f, 10f, 90f);
EditorGUILayout.Space ();
EditorGUILayout.TagField ("Tag Field", "Player2");
EditorGUILayout.TextArea ("this is a text area.");
EditorGUILayout.TextField ("Text Field", "this is a text field.");
EditorGUILayout.Toggle ("Toggle", true);
EditorGUILayout.ToggleLeft ("ToggleLeft", false);
EditorGUILayout.Vector2Field ("Vector2 field", new Vector2 (50f, 30f));
}
}
결과화면, 위에서부터 스크립트의 순서대로 ColorField부터 Vector2Field까지 나온다.
GUILayoutOption을 설정하지는 않았지만 뭐가 있는지는 한번 알아보자.
GUILayoutOption
'아카이빙 > Unity3D' 카테고리의 다른 글
[Unity3D] 커스텀 에디터 - 반복문으로 오브젝트 생성 쉽게하기 (0) | 2017.04.14 |
---|---|
[Unity3D] 커스텀 에디터(5) - EditorStyles (0) | 2017.04.14 |
[Unity3D] 커스텀 에디터(4) - GUILayout (0) | 2017.04.11 |
[Unity3D] 커스텀 에디터(3) - EditorWindow (0) | 2017.04.10 |
[Unity3D] 커스텀 에디터(1) - MenuItem (3) | 2017.04.09 |