에셋 파일은 같은 프로젝트 내에서 GUID로 식별된다. 뿐만 아니라 이 GUID를 이용하여 에셋 파일을 호출하고, 조작하고, 생성하는 등 여러 가지 작업을 한다. GUID에 대해서는 예전에 포스팅해 둔 글을 밑에 넣어둔다. https://howudong.tistory.com/153 [Unity 3D] 유니티 에셋(Asset)의 식별되는 원리 유니티 에셋이란? 유니티 에셋은 게임 제작에 필요한 모든 요소들을 말한다. 3D 모델, 텍스쳐 이미지, 사운드, 파티클 효과, 유틸리티 등을 모두 유니티에서는 에셋이라고 부른다. 유니티 에셋 내 howudong.tistory.com 유니티 에셋 호출(불러오기) using UnityEditor; public class TestEditWindow : EditorWindo..
유니티 에셋이란? 유니티 에셋은 게임 제작에 필요한 모든 요소들을 말한다. 3D 모델, 텍스쳐 이미지, 사운드, 파티클 효과, 유틸리티 등을 모두 유니티에서는 에셋이라고 부른다. 유니티 에셋 내부 유니티 에셋은 무엇으로 이루어져 있을까? 한번 직접 프로젝트 폴더를 열어 알아보자. 에셋 폴더에 있는 Scenes.meta 파일을 텍스트 편집기로 열어본 결과이다. 여러 개의 설정 값들이 적혀있는 것을 확인할 수 있다. 여기서 핵심은 guid라고 적힌 값이다. 유니티에서는 guid를 통해 에셋들을 식별한다. GUID GUID는 유니티에서 에셋들을 구분하기 위해서 주어진 고유한 값이다. 같은 프로젝트 내에서는 고유한 값으로 존재한다고 보면 된다. 즉, 다른 프로젝트라면 같은 GUID 값이 존재할 수 있다는 말이다..
목표 https://howudong.tistory.com/149 [Unity 3D] GUI를 이용한 인스펙터(Inspector) 커스터마이징 목표 오브젝트에 스크립트를 넣어 인스펙터 뷰를 커스터마이징 직렬화(Serialization) - 해당 필드를 유니티가 인식할 수 있는 상태로 만드는 것 - 유니티가 처리할 수 있는 형태로 만드는 것 - Inspect howudong.tistory.com 해당 포스팅에서 했던 GUI를 이용한 인스펙터 커스터마이징을 응용하여, 자신이 만든 에디터 창(Editor Window)과 인스펙터(Inspector)를 연결하겠다. 연결한다는 말은 에디터 창에서 프로퍼티의 값을 조절하면 인스펙터에도 적용되고, 그 반대도 적용되는 것을 말한다. 프로퍼티 값 초기화(가져오기/불러오기)..
목표 오브젝트에 스크립트를 넣어 인스펙터 뷰를 커스터마이징 직렬화(Serialization) - 해당 필드를 유니티가 인식할 수 있는 상태로 만드는 것 - 유니티가 처리할 수 있는 형태로 만드는 것- Inspect를 조작하기 위해선 직렬화는 필수적인 과정 -> 유니티가 직렬화할 수 있는 오브젝트를 만들어야 한다. CustomEditor와 Editor 우선 커스터마이징 할 스크립트[CustomScript]를 작성한다. public class CustomScript : MonoBehaviour { public GameObject otherObject; public string myName; public int myHp; } 커스터마이징 에디터 스크립트[CustomEditorTest]를 CustomScript..
Event OnGUI()를 호출하는 주체(OnGUI 보다 Low-Level) - 사용자와의 입력과 상호작용 - 트리거들을 공통적으로 처리하는 예약된 함수들이 정의되어 있다 - 효율성을 위해 OnGUI() 내부 코드와 현재 Event의 관계 여부에 따라 무시할 수 있음 1. 현재 이벤트가 드로잉이 아닌데, 드로잉 관련 코드를 만나면 그 코드를 무시 2. MouseClick 이벤트로 OnGUI()가 호출되면 해당 흐름에서는 Drawing 수행 코드 무시 Event 종류 Event.current: 현재 OnGUI()를 호출하게 된 Event Layout Event: Repaint 전 GUI들의 배치 값 관련 수집 이벤트 유니티 상단에 MyTool/OpenTool을 눌러 생성된 창 위에 마우스를 올리고 클릭, ..
GUI Content '무엇을 그릴까?'에 대한 클래스 아래와 같이 GUIContent를 생성하여 사용한다. private void OnGUI() { var myContent = new GUIContent(); //GUIContent 생성 myContent.text = "textText"; myContent.image = EditorGUIUtility.FindTexture("AvatarController.Layer"); EditorGUILayout.LabelField(myContent); // myContent Label 생성 myContent.tooltip = "this is ToolTip"; // 마우스 위에 대면 나오는 거 GUILayout.Button(myContent); } myContent에 ..
GUI 레이아웃 시스템을 이해함으로써, Layout을 좀 더 세밀하게 다룰 수 있다. 예를 들어, EditorGUILayout.Label() 함수를 사용하여 여러 Label을 GUI로 만들면 세로로 Label들이 배치될 것이다. 하지만 LayoutSystem을 이해하고 지금부터 배우는 새로운 함수를 사용하면 좀 더 복잡한 배치가 가능해진다. 가로/세로 배치 // Layout을 가로로 배치한다. EditorGUILayout.BeginHorizontal(); { .. 원하는 GUI 배치 내용물 입력 } EditorGUILayout.EndHorizontal(); // Layout을 세로로 배치한다. EditorGUILayout.BeginVertical(); { .. 원하는 GUI 배치 내용물 입력 } Edit..
EditorGUILayout 함수 using UnityEngine; using UnityEditor; public class TestEditorWindow : EditorWindow { int intValue; float floatValue; Color colorValue; Gradient gradientValue = new Gradient(); Rect rectValue; Vector3 vector3Value; Vector3Int vectorInt3Value; UnityEngine.Object objectValue; string passwordValue; string tagValue; UnityEngine.ParticleSystemCollisionType enumValue; private void On..