트리 뷰 - Unity 매뉴얼 (unity3d.com)
트리 뷰 - Unity 매뉴얼
Note: It’s strongly recommended to use the UI Toolkit to extend the Unity Editor, as it provides a more modern, flexible, and scalable solution than IMGUI.
docs.unity3d.com
회사에 가서 유니티를 켜면 메뉴 자체가 다르다.
Default 값 유니티를 그대로 사용하는 경우는 없다.
유니티 Tools를 직접 커스터마이징 할 수 있는 방법을 알아 보자
유니티의 기본 ViewPort는 Open GL로 되어 있다.
IMGUI란?
IMGUI는 "Immediate Mode GUI"의 약자로, 그래픽 사용자 인터페이스(GUI)를 만드는 방법 중 하나입니다.
전통적인 retained mode GUI (RMGUI) 시스템과는 대조적으로, IMGUI는 매 프레임에서 GUI 요소를 다시 그리는 방식으로 작동합니다. 이 방식은 GUI 상태를 별도로 저장하지 않으며, 대신 코드의 흐름과 함께 GUI 요소를 그립니다.
IMGUI의 주요 장점 및 특징은 다음과 같습니다:
- 간결한 코드: GUI와 코드의 동작이 밀접하게 연결되어 있어서 코드의 길이가 줄어들고, 더 직관적으로 GUI 요소를 작성할 수 있습니다.
- 상태 관리의 간소화: GUI의 상태를 별도로 관리할 필요가 없기 때문에 코드가 더 간결해집니다.
- 동적인 GUI 생성: IMGUI는 동적인 상황에서 GUI 요소를 빠르게 생성하거나 변경하는 데 유용합니다.
- 디버깅 용이: GUI와 관련된 버그를 찾기가 더 쉬워집니다, 왜냐하면 GUI와 관련된 로직이 한 곳에 몰려 있기 때문입니다.
다만, IMGUI는 매 프레임에서 GUI를 다시 그려야 하므로 성능 문제가 발생할 수 있습니다. 그러나 최적화된 경우 대부분의 어플리케이션에서 충분히 빠르게 동작합니다.
Unity 게임 엔진에서는 IMGUI 방식으로 GUI를 그릴 수 있는 API도 제공하며, 이는 주로 디버깅 UI나 툴 제작 등에 사용됩니다.
기본적으로 Direct X로 게임을 만들 때 무슨 툴이 필요한가?
Map Tool (GameTool 이라고도 한다.)
- Object를 화면에 보여줘야 하는데, 보여주는 역할을 한다.
- 레벨 디자인을 할 수 있다.
Map Tool 이 나왔다는 것은 게임의 라이브 서비스가 임박했다는 뜻이다.
이 맵툴을 만드는 것이 유니티 툴 디자인이라고 할 수 있다.
API 를 만들어 본적이 있다면 어렵지 않게 만들 수 있다.
TreeView 또한 API에 존재하는 것이다.
Character Tool
1. Animation
2. Shader Tool
보통 게임을 만든다고 하면 캐릭터 툴과 맵 툴을 가장 먼저 만든다고 보면 된다.
버전 컨버팅이란? 이후 버전으로 버전 업그레이드(업데이트)를 하는것
컨버팅을 하면 가장 큰 문제가 되는 경우가 무엇일까?
메타파일이 깨지게 된다. 그러면 스크립트와 연결된 것들이 동작하지 않는다.
메타파일을 세이브할 수 있는 기능도 만들 수 가 있다.
메타파일의 정보를 파싱해서 세이브 할 수도 있다.
실무와 학습의 차이는
깊이, 디테일의 차이다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class CustomWindow : EditorWindow
{
public static void ShowWindow()
{
//Show existing window instance. If one doesn't exist, make one;
EditorWindow.GetWindow(typeof(CustomWindow));
}
}
GetWindow 함수는 매개변수로 타입을 받는다고 되어있으니 typeof를 사용해여 타입을 넣어주면 됩니다.
함수한에 typeof 라는 예약어는 매개변수의 타입을 반환하는 역할을 수행합니다.
따라서 CustomWindow 라는 타입이 반환됩니다.
(int 라고 치면 int32 라는 타입이 반환됩니다.)
이렇게 만들고 유니티 상단에 Window 에 들어가 보면 MyCustomWindow 라는 창을 볼 수 있습니다.
열어 보면 빈 창을 볼 수 있습니다.
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
public class MyWindow : EditorWindow
{
string myString = "Hello World";
bool groupEnabled;
bool myBool = true;
float myFloat = 1.23f;
[MenuItem("Window/MyWindow")]
public static void ShowWindow()
{
EditorWindow.GetWindow(typeof(MyWindow));
}
private void OnGUI()
{
{
GUILayout.Label("Base Settings", EditorStyles.boldLabel);
myString = EditorGUILayout.TextField("Text Field", myString);
groupEnabled = EditorGUILayout.BeginToggleGroup("Optional Settings", groupEnabled);
myBool = EditorGUILayout.Toggle("Toggle", myBool);
myFloat = EditorGUILayout.Slider("Slider", myFloat, -3, 3);
EditorGUILayout.EndToggleGroup();
}
}
}
이번에는 윈도우에 토글 버튼과 슬라이더, 텍스트를 넣은 코드입니다. 위 코드를 저장하고 Window 패널에서 실행시키면 아래와 같은 화면을 볼 수 있습니다.
퍼포먼스와 관련한 이유로 EditorGUILayout 함수를 프로퍼티 드로어와 함께 사용할 수 없습니다.
기타 참조 메뉴얼
프로퍼티 드로어 - Unity 매뉴얼 (unity3d.com)
프로퍼티 드로어 - Unity 매뉴얼
프로퍼티 드로어는 스크립트에서 속성을 사용하거나 특정 Serializable 클래스가 표시되어야 하는 방법을 제어하여 인스펙터(Inspector) 창 에 특정 컨트롤이 표시되는 방법을 커스터마이즈할 때 사
docs.unity3d.com
커스텀 에디터 - Unity 매뉴얼 (unity3d.com)
커스텀 에디터 - Unity 매뉴얼
애플리케이션 개발을 가속화하려면 자주 사용하는 컴포넌트에 대한 커스텀 에디터를 만드십시오. 이 페이지에서는 단순한 스크립트를 생성하여 게임 오브젝트가 항상 특정 지점을 바라보도록
docs.unity3d.com