-
14주차 - 에디터 작업, 오브젝트 컨텐츠 추가 하기Unity/Unity 스파르타 2024. 3. 22. 21:08728x90
1. 에디터 사이즈 설정
2. 구역 설정
3. 오브젝트 컨텐츠 생성하기
4. 마무리 OnGUI() 로 레이아웃 그려주기
1. 에디터 사이즈 설정
[MenuItem("Window/Create Map Tool")]
- 프로젝트 Widow 메뉴에 에디터 메뉴를 추가할 수 있습니다
툴의 최소 사이즈와 최대 사이즈를 설정해주고 마지막에 Show()를 통해 창을 Unity 편집기 인터페이스에 표시해 줍니다.
using System.Collections.Generic; using UnityEngine; using UnityEditor; public class CreateMap_Tool : EditorWindow { [MenuItem("Window/Create Map Tool")] public static void ShowWindow() { CreateMap_Tool ct = (CreateMap_Tool)GetWindow(typeof(CreateMap_Tool)); ct.minSize = new Vector2(350, 500); ct.maxSize = new Vector2(350, 700); ct.Show(); } }
2. 구역 설정
툴 레이아웃의 영역 설정은 Rect로 설정해 줍니다.
x,y : 구역의 시작점
width,height : 구역의 크기 설정
GUI.DrawTexture(objectSection, objectSectionTexture); : 텍스쳐를 통해 구역의 배경화면을 설정 할 수 있습니다
Rect objectSection; private void DrawLayouts() { objectSection.x = 0; objectSection.y = 100; objectSection.width = Screen.width; objectSection.height = 200; GUI.DrawTexture(objectSection, objectSectionTexture); }
3. 오브젝트 컨텐츠 생성하기
- 오브젝트 컨텐츠들을 놓을 구역 설정을 해줍니다
- . GUILayout.BeginArea(objectSection); 구역 설정
- 리소스에 있는 오브젝트들을 불러옵니다
- 오브젝트들의 프리뷰를 텍스쳐로 가져와 GUIContent 리스트를 만듭니다
list = new(Resources.LoadAll<GameObject>(path)); foreach (GameObject obj in list) { Texture2D texture = AssetPreview.GetAssetPreview(obj); contentsList.Add(new GUIContent(texture)); }
4. GUIContent 를 모아논 리스트를 사용해 레이아웃에 그려줍니다.
foreach (GUIContent content in contentsList) { if (curWidth == 0) { GUILayout.BeginHorizontal(GUILayout.Width(Screen.width)); } if (GUILayout.Button(content, _GUIStyle_Cell)) { Debug.Log($"{index}, {list[index]}"); } GUILayout.Label(list[index].name, _GUIStyle_Text); if (curWidth > screenWidth - 10) { curWidth = 0; index++; GUILayout.EndHorizontal(); continue; } curWidth += _GUIStyle_Cell.fixedWidth; index++; } GUILayout.EndArea();
*구역설정후 마지막에 구역을 끝내줘야함
GUILayout.BeginScrollView(); GUILayout.BeginArea() GUILayout.EndArea(); GUILayout.EndScrollView();
GUIStyle guiStyle = new GUIStyle();
GUIStyle 을 통해 GUI의 스타일을 조정할 수 있다
마진, 패딩, 글자색, 크기 등등728x90'Unity > Unity 스파르타' 카테고리의 다른 글
15주차 - Selection.activeGameObject, EditorApplication.ExecuteMenuItem() (0) 2024.03.26 15주차 - GUI 공부(GUIUtility.GetControlID(),Event,HandleUtility.Repaint()) (0) 2024.03.25 14주차 - 에디터 작업을 위한 사전작업 (0) 2024.03.21 14주차 - Grid Placement System (0) 2024.03.19 14주차 - 리펙토링 (0) 2024.03.19 - 오브젝트 컨텐츠들을 놓을 구역 설정을 해줍니다