C#의 경우 public으로 선언된 변수(어트리뷰트)는 자동으로 인스펙터에 표시가 된다.
수치값의 경우 textbox , bool은 토글 등의 UI를 제공해 주는데, 이 UI를 커스터마이징이
가능하게 되어 있다.
이런 커스텀 UI와 관련된 클래스가 몇가지 있는데,
EditorWindow : 팝업 윈도우 관련
ScriptableWizard : 확인/적용 등의 버튼을 가진 마법사 윈도우
Editor : 커스텀 에디터를 위한 기본 클래스
이는 에디터와 관련한 클래스 이므로, UnityEditor 네임스페이스를 포함해야 하고,
Assets\Editor 폴더에 위치해야 한다.
인스펙터용 커스텀 에디터
1. 네임스페이스 추가
using UnityEditor;
2. 연결할 스크립트 지정
[CustomEditor(typeof (MyScript))]
3. 에디터 클래스 선언
public class MyEditor : Editor {
4. 인스펙터 오버라이드
public override void OnInspectorGUI() {
// 기존 gui 그리기(필요한 경우)
DrawDefaultInspector();
// 타겟 설정
MyScript my = (MyScript) target;
// gui 그리기
// EditorGUI, EditorGUILayout 등 사용
}
5. 씬에 gui 요소를 그리고자 할때..
public void OnSceneGUI()
{
}
}
게임 오브젝트를 만들고 위에 연결된 스크립트를 컴포넌트로 지정하면 오버라이드된 인스펙터가 표시된다.
* 예제 : 텍스처 그리기
Behaviour 스크립트
public Texture myTexture = null;
Editor 스크립트(OnInspectorGUI)
MyScript my = (MyScript) target;
Rect rc = EditorGUILayout.BeginHorizontal();
if( my.myTexture != null )
{
EditorGUI.DrawPreviewTexture( new Rect( rc.left, rc.top,
my.myTexture.width,
my.myTexture.height) ,
my.myTexture );
}
EditorGUILayout.EndHorizontal();
추가> 검색하다보니 무척 정리가 잘 된 블로그가 있어서 소개...
추가>
에디터 윈도우
public class ExampleWindow : EditorWindow {
// Window 메뉴에 표시할 이름과 클릭시 처리할 명령
[MenuItem("Window/Example")]
public static void ShowWindow()
{
GetWindow<ExampleWindow>("윈도우 타이틀");
}
public void OnGUI()
{
// 라벨, 버튼 등 윈도우 요소가 필요한 경우
GUILayout
EditorGUILayout
}
}
툴바
GUILayout.Toolbar
'프로그래밍 > Unity' 카테고리의 다른 글
[Unity] VR 환경 끄거나 켜기 (0) | 2018.09.14 |
---|---|
[Unity] AssetDatabase (0) | 2018.09.12 |
[Unity] AssetBundle (0) | 2018.08.24 |
[unity3d] 서피스 쉐이더 정리 (1) | 2018.06.26 |
[Unity] Mesh 생성 및 변경 (0) | 2011.06.24 |
2D를 위한 Plane 생성 (0) | 2011.05.30 |
Physics.Raycast (0) | 2011.05.13 |
2D 게임을 위한 몇가지 (0) | 2011.05.09 |
터치 입력 (0) | 2011.04.04 |
스크립트에서 오브젝트/컴포넌트 접근 및 활성화 (0) | 2011.02.11 |