에셋을 받다보면 에디터 자체에 메뉴가 생기는 경우를 본 적이 있을것이다.
이 기능을 EditorWindow라고 하는데 굉장히 쉽게 만들 수 있다.
1 2 3 4 5 6 7 | using UnityEditor; public class TestEditor : EditorWindow { [MenuItem("Custom/ColliderSelector")] static void Init() { TestEditor window = (TestEditor)EditorWindow.GetWindow(typeof(TestEditor)); } | cs |
우선 EditorWindow를 상속받는 스크립트를 하나 만든 후에 위와 같이 Init()함수를 작성해준 뒤
MenuItem 속성을 붙여준다. "폴더명/메뉴명" 느낌으로 작성하면 된다.
이후 OnGUI() 함수에 구현할 내용을 적어주면 끝이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; public class TestEditor : EditorWindow { [MenuItem("Custom/ColliderSelector")] static void Init() { TestEditor window = (TestEditor)EditorWindow.GetWindow(typeof(TestEditor)); } // 그려주는 함수 private void OnGUI() { EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("동그라미 선택")) { SphereCollider[] colliders = FindObjectsOfType(typeof(SphereCollider)) as SphereCollider[]; List<GameObject> listGO = new List<GameObject>(); if(colliders != null) { for (int i = 0; i < colliders.Length; i++) listGO.Add(colliders[i].gameObject); } Selection.objects = listGO.ToArray(); } if (GUILayout.Button("네모 선택")) { BoxCollider[] colliders = FindObjectsOfType(typeof(BoxCollider)) as BoxCollider[]; List<GameObject> listGO = new List<GameObject>(); if (colliders != null) { for (int i = 0; i < colliders.Length; i++) listGO.Add(colliders[i].gameObject); } Selection.objects = listGO.ToArray(); } if (GUILayout.Button("콜라이더 전체 선택")) { Collider[] colliders = FindObjectsOfType(typeof(Collider)) as Collider[]; List<GameObject> listGO = new List<GameObject>(); if (colliders != null) { for (int i = 0; i < colliders.Length; i++) listGO.Add(colliders[i].gameObject); } Selection.objects = listGO.ToArray(); } EditorGUILayout.EndHorizontal(); } } | cs |
해당 버튼을 누르면 SphereCollider, BoxCollider, 모든 Collider를 가진 오브젝트들을 하이어라키에서 선택해준다.
(네모 선택 버튼을 눌렀을 때)
이런식으로 원하는 에디터윈도우를 만들 수 있다.
https://docs.unity3d.com/kr/current/ScriptReference/EditorWindow.html
'프로그래밍 공부 > Unity 팁' 카테고리의 다른 글
유니티 script template 커스터마이즈 (0) | 2018.11.21 |
---|---|
spine 구경만 해보기 (0) | 2018.11.21 |
유니티 커스텀에디터 사용하기(인스펙터 컴포넌트 수정) (0) | 2018.11.21 |
MVC(Model-View-Controller) 패턴. 유니티 커스텀 (0) | 2018.11.20 |
두 벡터 사이의 각도 0~360도로 구하기 (2) | 2018.09.12 |