[Unity] 에디터 프로그래밍 – 게임 오브젝트에 이름표(Name Tag) 달아보기

위의 이미지와 같이 Scene view에서 게임 오브젝트의 이름 정보가 UI로 표시되도록 구성해보려고 한다.  이를 위해 3단계로 나누어서 구현해 보았다. 게임 오브젝트 생성 이름표 정보 GUI 표시 이름표와 게임 오브젝트사이에 연결선 그리기 첫번째인 게임 오브젝트 생성은 상황에 따라 다르겠지만, 여기서는 단순하게 Resources 폴더에 있는 MyCube.prefab을 로드하여 생성하는 것으로 해보았다.  자, 이제…

[Unity] 에디터 프로그래밍 – 데이터 저장

에디터 윈도우를 통해 얻은 input 데이터들은 어떻게 저장을 해야할까.  예전에 커스텀 에디터 윈도우를 띄운 후 변수와 컨테이너에 열심히 값을 담았는데, 다시 에디터 윈도우를 열었을 때 모두 사라져 버려 당황한 적이 있다.  에디터 윈도우를 닫고, 새로 열때 마다 다른 인스턴스가 만들어지기 때문에 에디터 윈도우 클래스에서 선언된 변수는 이전 변수를 가리킬 수…

[Unity] 에디터 프로그래밍 – Drag and Drop UI 구현

에디터 윈도우를 하나 띄워보고, 프리팹을 드래그 앤 드랍하여 해당 오브젝트를 사용해보자.  우선 BEditorWindow.cs 스크립트를 만들고, OnEnable, OnDisable, OnGUI 함수를 추가하였다.   파일을 드래그하여 놓을 위치는 GUI.Box를 이용하여 영역을 잡아보았다. using UnityEngine; using UnityEditor; public class BEditorWindow : EditorWindow { [MenuItem(“Tools/DragNDropWindow”)] static void Init() { EditorWindow.GetWindow(typeof(BEditorWindow)).Show(); } protected void OnEnable() { }…

[Unity] 에디터 프로그래밍 – 한글폰트 적용하기

에디터 윈도우를 하나 띄워보고, 간단한 레이블을 추가해보자.  AEditorWindow.cs를 만들어, Editor 폴더 안에 위치시키는 것으로 시작할 수 있다.  (Editor 폴더는 스페셜 폴더로서 Editor 나 EditorWindow를 상속받은 스크립트는 이 폴더 아래에 위치해야 한다.) AEditorWindow.cs에 기본 골격을 갖추기 위해 Init, OnEnable, OnDisable, OnGUI을 추가하였다. 컴파일이 잘 되었다면, 유니티 탑 메뉴에서 Tools 아래에 My Editor Window를 선택하여…

[Unity] 스크립트로 애니매이션 커스터마이즈하기

부제: Customize Animation using Script 애니매이션을 스크립트로 커스터마이즈(이하 변경)하기 위해서는 스크립트의 Execution Order(이하 실행 순서)에 대한 이해가 필요하다.  스크립트의 실행 순서란 무엇을 말하는가.  Unity 메뉴얼에 도식화가 잘 되어 있는데, 약간 복잡해 보이지만 위에서 아래로 순서대로 정렬되어 있기 때문에 보기는 어렵지 않다. Script Execution Order (Unity 메뉴얼) 실행 순서에 대해 자세한…

[Unity] 오브젝트 생성/삭제시 Editor에서 메모리 해제가 잘 안된다면

Unity editor에서 프로젝트를 실행하고, Profiler를 이용하여 메모리 상태를 확인하는 경우 게임오브젝트를 생성후 삭제했음에도 불구하고, 여전히 메모리에 레퍼런스가 잡혀 있는 경우가 있다.  디바이스에서는 발생하지 않는 경우라서 editor 내부에서 캐시를 하는 경우로 보이지만, 매번 디바이스에서 프로파일링하여 확인하는 것도 여간 번거로운 일이 아니다.  시간을 줄이고 생산성을 높이자면 editor에서도 어느 정도 정확한 메모리 정보가…

[Unity] 에셋번들 사이즈 줄이기

부제: Assetbundle dependecy를 개선하여 에셋번들 사이즈 줄이기 Unity로 게임 개발을 하다보면 리소스(프리팹, 텍스쳐, 애니매이션, 메터리얼 등)를 대부분 assetbundle로 분리하여 관리하게 된다.  특히, 개발 기간동안 리소스가 점점 많아지게 되면  assetbundle이 중복된 리소스를 포함하는 경우가 생기는데, 이를 정리하는 것은 쉽지 않은 일이다.  중복된 리소스는 어떻게 하면 생기게 되는지, 그리고 어떻게 개선할 수…