클래스가 EditorWindow를 상속 받도록 한 후 open 함수를 만들면 된다.어트리뷰트로 해당 함수가 유니티 에디터의 상단 메뉴바 아이템임을 나타내고,함수의 매개변수로 버튼명과 단축키를 지정할 수 있음%는 컨트롤 키를 말함
에디터에서 GUI들을 그리기 위해서는 위와 같이 EditorGUILayout나 GUILayout을 사용해당 함수들은 유니티가 구동하는 OnGUI 함수에서 호출해야 정상 작동하게 됨
GUI, GUILayout와 EditorGUI, EditorGUILayout 차이=> 레이아웃이 붙은 GUI들은 유니티가 제공하는 자동 레이아웃 배치를 사용한다는 뜻GUI와 EditorGUI의 차이=> Editor가 붙을 시 Editor에서만 사용 가능, 안붙어 있을
https://docs.unity3d.com/ScriptReference/EditorGUILayout.htmlIntFieldFloatFieldColorField: Color 설정GradientField: Gradient 설정Vector3FieldVector3I
Layout은 사용 시에 시작할 때는 Begin...(),끝날 때는 End...() 함수를 사용하여 쌍을 이루도록 한다.특정 GUI의 길이를 EditorGUIUtility를 통해 설정할 수 있음해당 길이는 전역적으로 사용하므로 수정 후 다시 복원해야 사이드 이펙트를 없
GUIContent: 무엇을 그릴지 정한다.GUIStyle: 어떻게 그릴지 정한다.content나 style로 만들어 둘 시 재사용이 편하다.GUIStyle들은 EditorStyles나 GUI.skin에서 찾을 수 있고,GUI.skin은 GetStyle이나 FindSt
OnGUI 함수는 사실 유니티 내부 event에서 불리는 함수임EventType은 많은 것들이 있고 GUI는 Repaint 플래그일 때 그려진다.마우스 이벤트로 인하여 OnGUI 이벤트가 호출 될 시에는 GUI가 다시 그려지지 않음마우스가 에디터 툴 안에 들어 가거나
SerializeField는 유니티 에디터가 읽을 수 있도록 직렬화함데이터 보호 수준과 상관 없음컴포넌트 GUI를 수정하기 위해서는 Editor 클래스를 상속 받아야 하고,CustomEditor 어트리뷰트에 재정의를 하려는 컴포넌트 타입을 넣어준다.GUI를 재정의 한
Targets 사전에 CustomScript 데이터들을 수집해 둔다.isFocused 데이터는 EditorWindow가 선택이 되어 있을 경우 true,다른 윈도우가 선택될 시 false가 되도록 구현Update는 매프레임 불리게 되고 Targets를 업데이트하고,Re
프로퍼티들이 EditorGUILayout.PropertyField 함수를 통해 그려지는 것을 재정의할 수 있음PropertyDrawer를 상속받는 클래스 생성어트리뷰트로 CustomPropertyDrawer에 데이터의 타입을 입력어떻게 그려질지를 OnGUI를 오버라이딩
에디터를 수정할 수 있도록 하는 클래스를 생성Enable, Disable 시 콜백 함수를 추가, 삭제하도록 한다.OnSceneGUI는 SceneView 데이터를 받는 함수로 구현해야 한다.Handles는 SceneView에서 UI를 그리그 위한 클래스이며,해당 클래스를
프로젝트 내의 모든 에셋들은 GUID를 부여 받게 되고 이를 통해 구분하게 된다.guid는 AssetDatabase 클래스를 통해 찾거나 이용 가능하다.메테리얼을 찾을 경우 FindAssets 함수에 타입 "t:"와 "material"을 합쳐서 전달해주면 된다.혹은 파
Selection 클래스를 통해 에디터에서 현재 클릭하고 있는 객체들의 정보를 가져올 수 있음그리고 Editor.CreateEditor를 통하여 에디터를 만들어낼 수 있고,선택되어 있는 객체를 인자로 넣을 시 복사가 된다.DrawHeader 함수로 인스펙터에서 이름과
EditorPrefs 클래스를 사용하여 에디터에서 사용하는 데이터들을 하드에 저장하며 사용할 수 있음
Editor helper class에디터를 구현하면서 사용할 공통적인 함수들을 구현 해놓은 static 클래스FlexibleSpace 함수를 통하여 아래와 같은 모양으로 가운데에 라벨을 띄우게 됨FlexibleSpace - Content - FlexibleSpaceTo
Custom grid class마우스 위치 값을 통해 현재 그리드의 위치를 알 수 있도록 월드 좌표를 그리드 좌표로 계산하여 반환하는 함수Tool window classTool window enable 시 씬 이벤트 함수를 등록씬 뷰에서 마우스가 이동할 때 이벤트가 발
Custom Grid Palette class에디터에서 마우스 오른쪽 클릭으로 생성할 수 있는 커스텀 메뉴를 생성하는 클래스팔레트는 또한 맵을 그릴 때 사용할 아이템들을 들고 있는 리스트를 멤버 변수로 갖도록 함Custom Grid Palette Item class위에
Custom Grid class CustomGrid 클래스에 dictionary로 맵에 그려지는 오브젝트들을 관리할 수 있도록 구현 tool window 클래스에서 마우스 이벤트가 발생한 위치에 대한 그리드 정보를 얻을 수 있도록 함수들을 구현
Custom Grid classCustomGrid 클래스에서 맵을 저장하는 Items dictionary를 저장하고 로드할 수 있도록serialize와 deserialize 함수를 구현Tool Window classDrawEditMode 시에 load, save 버튼을
유니티 엔진 2021.3.9f1 버전에서는 맵 아이템을 그린 후 undo 시 에디터 crash 발생유니티 엔진 2021.3.6f1 버전에서는 정상 작동Tool Window class오브젝트가 만들어지고 삭제되는 부분들을 Undo 함수로 교체하여유니티의 Undo 시스템에
Tool Window class씬에서 마우스가 그리드 위에 있을 때 해당 칸의 아이템 정보와 그리드 위치를 보여주도록 구현그리드의 id를 가지고 팔레트에서 해당 오브젝트를 가져옴오브젝트는 GetAssetPreview를 통해 프리뷰 텍스쳐를 얻을 수 있고이를 DrawTe