[Unity 기능] 컴파일 시점 제어하기
·
유니티(Unity)/기능 구현
✍️ 개요 Unity Editor 관련 툴을 제작하거나, Editor을 확장할 때 컴파일 시점을 제어해야 합니다. 이런 경우엔 어떻게 구현하면 좋을까요? 그것은... Unity에서 제공하는 애트리뷰트(Attribute)을 사용하면 됩니다!      📌 사용 규칙  ※ InitializeOnLoad 애트리뷰트를 통해 컴파일 후 에디터 상으로 Debug 호출 구현  클래스 또는 메소드 상단에 애트리뷰트를 명시합니다. 이때, 정적 생성자 또는 정적 메소드에서만 작동합니다. 또한, 스크립트로 존재하는 것만으로 실행됩니다. 런타임에는 영향을 미치지 않습니다.      📌 에디터 관련   InitailizeOnLoad : Editor가 로드될 때 해당 클래스의 정적 생성자를 자동으로 호출하는 애트리뷰트 Edit..
[Unity 기능] 커스텀 패키지 제작하기
·
유니티(Unity)/기능 구현
✍️ 개요 유니티를 사용해온 프로그래머라면 사용자 패키지(Custom Package)을 만들고 싶다는 생각이 든 적 있지 않나요? 저는 최근에 게임잼이나 신작을 준비할 때마다 빠르게 시작하기 위한 탬플릿이 있으면 좋겠다는 생각을 했습니다. 그래서 자주 사용하는 Manager 모듈을 탬플릿으로 제작하여 사용자 패키지로 만들었습니다. 혹시라도 저처럼 사용자 패키지를 제작하고 싶은 분들을 위해 과정을 공유하도록 하겠습니다.      📌 커스텀 패키지 레이아웃 설정  위 하이러키 구조가 유니티가 권장하는 커스텀 패키지 레이아웃입니다. 다소 복잡해보이지만 모두 구축할 필요는 없습니다. 그래서 저는 package.json, Editor, Runtime, Samples~만 구축하도록 하겠습니다. 만약 자세한 내용에..
[Unity 기능] Sprite Atlas에 대하여
·
유니티(Unity)/기능 구현
✍️ 개요 Unity에서는 빌드 용량의 대부분은 Texture가 차지합니다. 또한, 게임을 플레이하면서 메모리의 대부분을 차지하기에 최적화가 중요합니다. 그래서 유니티는 Texture을 효율적으로 처리하기 위해 Sprite Atlas를 사용합니다.    📌 Sprite Atlas란?  Sprite Atlas : 여러 개의 Texture를 단일 Texture로 결합하는 에셋  위 사진을 살펴보면 3개의 Texture을 살펴볼 수 있습니다.보물 상자 (159 * 150 크기)보물 더미 (87 * 67 크기)보물 한줌 (61 * 41 크기) 그리고 이 3개를 하나로 묶어 256 * 256 크기의 Sprite Atlas를 만들었습니다. 그런데 Sprite Atlas을 굳이 생성하고 사용하는 이유는 뭘까요?  ..
[Unity 기능] 9-Slicing Sprite 제작
·
유니티(Unity)/기능 구현
📌 개요  게임을 개발하다보면 하나의 UI을 늘리거나 줄여서 재활용하고 싶은 경우가 있습니다. 하지만 늘리거나 줄이면 위처럼 텍스처가 깨지기 마련입니다. 그래서 각 비율에 맞는 UI을 새로 제작하여 추가하는 방법을 사용합니다.    하지만 이 방법을 사용하면 다음과 같은 문제가 발생합니다.비율에 따라 새로운 리소스를 제작하기 때문에 인건 비용 추가 발생새로운 리소스로 인한 용량 비용 증가다른 비율에 대한 확장성 제한  흐음... 하나의 UI 텍스처로 다른 비율의 UI을 마구마구 뽑아낼 순 없는걸까요?    하지만 우리 킹갓제너럴 유니티는 이미 해결책을 보유하고 있었다는 것! 바로 '9 슬라이싱 스프라이트' 입니다!!   📌 9-Slicing Sprite 란?  9-Slicing Sprite : 다양한..
[기능] GetComponent 최적화 (CachedMonobehaviour.cs)
·
유니티(Unity)/기능 구현
Unity 개발을 하다 보면 GetComponent를 빈번하게 사용하게 됩니다. 하지만 매번 호출할 때마다 성능 오버헤드가 발생한다는 사실을 알고 계신가요? 이번 포스팅에서는 GetComponent를 캐싱하여 최적화하는 방법과 그 중요성에 대해 다뤄보겠습니다. 캐싱(Caching)이란?캐싱: 자주 사용되는 데이터를 미리 저장해두고, 이후에 해당 데이터에 빠르게 접근할 수 있도록 하는 기술 캐싱은 성능을 크게 향싱시키는 중요한 최적화 기법 중 하나 특히 GetComponent와 같은 무거운 연산을 반복적으로 호출하는 상황에서 매우 유용함 이제 캐싱으로 GetCompoent를 최적화하는 방법을 살펴보자   CachedMonobehaviourusing System;using System.Collections...