[Unity] 빌드된 에셋번들을 까보자

유니티에서 빌드된 에셋번들 파일은 바이너리 형식이기 때문에 어떤 내용이 들어있는지 확인할 수가 없다.  여러가지 이유로 빌드된 에셋번들을 열어볼 필요가 있는 데, 게임 오브젝트 정보부터 쉐이더 정보까지 여러가지를 텍스트로 확인해 볼 수 있다.  툴은 유니티가 설치된 폴더 하위에 Tools라는 폴더에 모두 있다.  Windows:C:\Program Files\Unity\Editor\Data\ToolsMac OSX:/Applications/Unity/Unity.app/Contents/Tools 두 가지 툴을 사용할 필요가 있는데, 윈도우 기준으로 WebExtract.exe와 binary2text.exe이다.  WebExtract.exe는 … Read more[Unity] 빌드된 에셋번들을 까보자

[Unity] aab(Android App Bundle)파일에서 테스트 가능한 apk 추출하기

apk 사이즈를 100Mb이하로 유지하기 힘들다면, Android App Bundle을 고려해 보아야 한다 (유니티 블로그).  플러그인도 늘어나고, 그에 따라 라이브러리 사이즈도 점점 늘게되면 에셋번들로 빼는 것도 한계가 오기 때문이다.  App Bundle은 구글 플레이로 부터 사용자의 기기 구성에 따라 최적화된 apk만 생성하여 제공 받게 되는 시스템이다.  유니티에서는 Build Settings에서 간단히 체크박스로 App Bundle을 선택할 수 있다. (버전 2018.3이상, 2017.4.17이상) … Read more[Unity] aab(Android App Bundle)파일에서 테스트 가능한 apk 추출하기

[Unity] 2019.3에서 눈에 띄는 기능 4가지 간단 요약

점진적 가비지 컬렉팅 (Incremental Garbage Collection) GC가 수행될 때, 모든 메모리를 해제하는 작업으로 인해 프레임이 끊기는 경우가 발생하곤 하는 데, 점직적 가비지 컬렉팅은 여러 프레임에 걸쳐 메모리를 해제하여 GC 스파이크가 발생하는 것을 방지한다.  간단히 PlayerSettings에서 체크 박스로 선택 가능하다. (유니티 블로그) 기기 시뮬레이터 (New Device Simulator) 에디터 내부에서 특정 해상도나 RAM/칩셋같은 하드웨어 정보를 세팅하여 기기 … Read more[Unity] 2019.3에서 눈에 띄는 기능 4가지 간단 요약

[Unity] 2017.4 LTS에서 2019.3으로 업그레이드시 발생한 이슈들

2017로 된 프로젝트를 2019.3에서 열었을 때, AssetDatabase Version 2로 에셋들을 리임포트 시킬지 여부를 묻는 것으로 시작한다.   AssetDatabase Version 2가 뭔가 했더니, 플랫폼 전환 사이에 일어나는 엄청난 리임포트 시간을 줄이기 위한 것으로 캐쉬된 리소스를 이용하여 리임포트 시간을 현저히 줄여준다고 한다 (Unity 블로그).  물론 이 기능이 잘 동작하는 지는 지켜봐야 할 일이다.   Crash 2017로 된 프로젝트를 2019 … Read more[Unity] 2017.4 LTS에서 2019.3으로 업그레이드시 발생한 이슈들

[Unity] 에디터 프로그래밍 – 탭(Tab) 기능

Editor window에 버튼이나 레이블등 콘트롤을 추가하다 보면 UI 공간이 부족하게 된다.  이때 탭을 넣어 화면을 전환시킨다면 하나의 윈도우에서 더 많은 UI 공간을 확보할 수 있다.  크롬 브라우저의 탭처럼 말이다.   탭만 넣는 것은 생각보다 간단하다.  GUILayout.Toolbar API만 이용하면 간단히 탭 버튼을 추가할 수 있다.  탭 버튼을 추가했으니, 화면을 전환하는 코드만 추가하면 기능상에 추가할 것은 없다.  이제 원하는 탭에 … Read more[Unity] 에디터 프로그래밍 – 탭(Tab) 기능

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

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

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

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

[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() { } protected void OnDisable() { } … Read more[Unity] 에디터 프로그래밍 – Drag and Drop UI 구현

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

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

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

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