-
[TIL] 11주차 3일 ( 유니티 커스텀툴 만드는 방법 )개발일지/스파르타 코딩클럽 부트캠프 2024. 6. 26. 20:41
유니티 에디터 커스텀
오늘은 유니티 커스텀 툴을 만드는 법에 대해서 조금 알아보려고 한다.
유니티 커스텀툴을 만들 때 필요한 것
- 에디터는 만들때는 MonoBehavior를 상속받지 않고 EditorWindow를 상속받아야 한다.
- using UnityEditor
옵션 창에 툴을 뜨게하는 법
[MenuItem("MyTool/MenuTest")] static void MyMenu() { GetWindow<CustomTest>(); }
툴에 글씨, 버튼을 새기는 방법
private void OnGUI() { EditorGUILayout.LabelField("메뉴 라벨"); EditorGUILayout.TextField("입력"); if(GUILayout.Button("버튼")) { Debug.Log("클릭했다."); var obj = GameObject.CreatePrimitive(PrimitiveType.Cube); obj.name = "큐브"; } }
색상과 그라디언트까지 표현할 수 있다.
씬 이동 버튼을 만드는 방법
private void OnGUI() { ChangeScene(); } void ChangeScene() { EditorGUILayout.LabelField("씬 이동 버튼"); if(GUILayout.Button("마을 씬")) { SceneManager.LoadScene(0); } if (GUILayout.Button("던전 씬")) { SceneManager.LoadScene(1); } if (GUILayout.Button("상점 씬")) { SceneManager.LoadScene(2); } }
참고로 로드씬을 하면 런타임 중에만 작동하고 실행중이지 않을 때는 오류가 뜬다
그럼 실행중이지 않을 때도 씬 전환을 버튼 딸깍으로 하고싶다면?
단축키 지정해주는 방법
// # -> 쉬프트, % -> 컨트롤, & -> 알트 [MenuItem("MyTool/MenuTest #1")]
주석에 나온 것 처럼
현재 #1이라고 적어놨으니 이 툴의 단축키는 Shift+1이 된다.
Editor 함수의 4가지 종류
Editor함수는 4가지의 종류가 있는데
GUI, GUILayout, EditorGUI, EditorGUILayout 이렇게 4 종류가 있다
모두가 다른 역할을 하는 것은 아니고
Editor + GUI + Layout이런 형태로 이해하면 좋을 거 같다.
GUI가 가장 원초적이라 먼저 살펴보자면
GUI는 모든 위치를 직접 설정해줘야한다.
private void OnGUI() { GUI.Label(new Rect(10, 10, 50, 50), "라벨"); GUI.Label(new Rect(13, 13, 50, 50), "라벨"); GUI.Box(new Rect(20, 20, 100, 100), new GUIContent()); }
Layout은 유니티가 자동으로 규격을 잡아준다.
private void OnGUI() { GUILayout.Label("라벨"); GUILayout.Label("라벨"); GUILayout.TextField("입력"); GUILayout.Button("버튼"); GUILayout.Box("박스"); }
여기서 옆으로 규격을 잡고싶다면?
private void OnGUI() { GUILayout.BeginHorizontal(); { GUILayout.Label("라벨"); GUILayout.Label("라벨"); GUILayout.TextField("입력"); GUILayout.Button("버튼"); GUILayout.Box("박스"); } GUILayout.EndHorizontal(); }
GUILayout.BeginHoriaontal() 안에 넣어주면 된다.
다음은 GUI를 꾸미는 방법인데
GUIContent와 GUIStyle이 있는데
GUIContent : 그려지는 컨텐츠에 대한 정보
GUIStyle : 어떤 식으로 그릴지
예시코드
private void OnGUI() { GUIContent content = new GUIContent(); content.text = "버튼임"; content.tooltip = "설명임"; GUIStyle style = new GUIStyle(EditorStyles.miniButton); style.normal.textColor = Color.white; style.hover.textColor = Color.red; style.active.textColor = Color.green; style.fontSize = 30; GUILayout.Button(content, style); GUILayout.BeginArea(new Rect(10, 10, 100, 100), GUI.skin.window); GUILayout.EndArea(); }
버튼의 텍스트가 빨간색이고 누르면 초록색으로 변한다.
'개발일지 > 스파르타 코딩클럽 부트캠프' 카테고리의 다른 글
[TIL] 11주차 5일 ( 리소스 데이터 관리 ) (0) 2024.06.28 [TIL] 11주차 4일 최종 프로젝트 기획 (0) 2024.06.27 [TIL] 11주차 2일 (0) 2024.06.25 [TIL] 11주차 1일 팀 프로젝트 (0) 2024.06.24 [TIL] 10주차 5일 ( 유니티에 관한 꿀팁 (심연)) (0) 2024.06.21