[Unity 기능] 2D Bone Animation 제작
·
유니티(Unity)/기능 구현
✍️ 개요   Bone Animatin은 Skeletal Animation 기법을 의미하며, Sprite에 뼈대를 생성하여 모델을 움직이는 기법입니다. 더 자연스러운 움직임을 재공하며 재사용성이 높아 많이 활용되고 있습니다. 오늘은 2D 환경에서 Bone Animation을 제작하는 방법에 대해 알아보도록 하겠습니다.      📌 환경 설정  UPM(Unity Pacakge Manager)에서 2D Animation 패키지를 설치합니다. 이 패키지는 Bone Animation 제작 기능을 제공합니다.    추가로 2D PSD Importer 패키지를 설치합니다. 이 패키지는 포토샵(PSD) 파일을 Unity에 Import 할 수 있도록 해줍니다. 포토샵에서 제작한 레이어들을 온전히 보존해주기 때문에 R..
[Unity 기능] 2D Endless Platform 구현 (2편)
·
유니티(Unity)/기능 구현
✍️ 개요    [ 2D Endless Platform 구현 (1편) ] [Unity 기능] 2D Endless Platform 구현 (1편)✍️ 개요    최근에 끝이 없는 2D Platform을 제작하고 있습니다. 하나의 Layer만 사용하는 Serial Endless Platform, 그리고 여러 개의 Multi Layer을 사용하는 Parallel Endless Platform으로 구성하려고 합니다.gus6615.tistory.com 이전에 끝이 없는 2D Platform 기능에서 하나의 Layer만 사용하는 Serial Endless Platform을 구현했습니다. 오늘은 하나가 아닌, 여러 개의 Layer을 사용하는 Parallel Endless Platform을 구현해보도록 하겠습니다. ※ ..
[Unity 기능] 2D Endless Platform 구현 (1편)
·
유니티(Unity)/기능 구현
✍️ 개요    최근에 끝이 없는 2D Platform을 제작하고 있습니다. 하나의 Layer만 사용하는 Serial Endless Platform, 그리고 여러 개의 Multi Layer을 사용하는 Parallel Endless Platform으로 구성하려고 합니다. 하지만 모두 다루기엔 글이 길어질 것 같아 2편으로 나눠 정리하도록 하겠습니다.      📌 시스템 설계  위 사진을 예시로 설계해보도록 하겠습니다. 하나의 Camera와 자동차, 4개의 숲 풍경 조각이 있습니다. 저는 이제 자동차를 앞으로 움직이고 무한한 풍경을 구현할 예정입니다.    가장 먼저 Camera와 풍경(Map)이 움직이도록 합니다. Q. Camera만 움직여도 Map이 뒤로가는 느낌을 줄 수 있지 않나요? A. 맞습니다...
[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...