[Unity 쉐이더] 메터리얼과 쉐이더 적용
·
유니티(Unity)/쉐이더
✍️ 개요  오늘은 메터리얼과 쉐이더를 직접 적용하는 간단한 실습을 해보도록 하겠습니다. 실습을 통해 쉐이더와 메터리얼이 Unity에서 어떻게 동작하는지 이해할 수 있습니다.      📌 메터리얼 생성  ① Model 생성하기 먼저, 쉐이더와 메터리얼을 적용할 3D Object을 만듭니다. [ Hierarchy ] - [ 우클릭 ] - [ 3D Object ] - [ Cube ] 을 선택하세요.    그러면 위처럼 Cube 하나가 생성됩니다.    Cube을 선택하면 Inspector 창을 살펴보면 Mesh와 Material을 확인할 수 있습니다. 기본적으로 URP에서 제공하는 Material이 설정되어 있습니다. Mesh = Model을 구성하는 Vertices 데이터Material = Mesh에 적..
[Unity 기능] 컴파일 시점 제어하기
·
유니티(Unity)/기능 구현
✍️ 개요 Unity Editor 관련 툴을 제작하거나, Editor을 확장할 때 컴파일 시점을 제어해야 합니다. 이런 경우엔 어떻게 구현하면 좋을까요? 그것은... Unity에서 제공하는 애트리뷰트(Attribute)을 사용하면 됩니다!      📌 사용 규칙  ※ InitializeOnLoad 애트리뷰트를 통해 컴파일 후 에디터 상으로 Debug 호출 구현  클래스 또는 메소드 상단에 애트리뷰트를 명시합니다. 이때, 정적 생성자 또는 정적 메소드에서만 작동합니다. 또한, 스크립트로 존재하는 것만으로 실행됩니다. 런타임에는 영향을 미치지 않습니다.      📌 에디터 관련   InitailizeOnLoad : Editor가 로드될 때 해당 클래스의 정적 생성자를 자동으로 호출하는 애트리뷰트 Edit..
[Unity 쉐이더] 쉐이더란 무엇인가?
·
유니티(Unity)/쉐이더
✍️ 개요  이 카테고리는 유니티의 쉐이더 그래프(Shader Graph)에 대한 이론과 실습을 정리한 카테고리입니다. 만약 쉐이더에 관심이 있으신 분들은 저와 함께 공부하면서 실력을 쌓아봅시다.  [ Unity - URP란 무엇인가? ] [Unity] URP란 무엇인가?✍️ 개요 UPR(Universal Renderer Pipeline)은 현재 Unity에서 기본적으로 사용하는 렌더 파이프라인입니다. 최근에는 뛰어난 성능과 최적화로 모바일과 VR 플랫폼에서도 많이 사용하고 있습니다. 오늘은gus6615.tistory.com 이전에 UPR란 무엇인가? 포스터에서 유니티 그래픽스 파이프라인의 역사에 대해 잠깐 언급한 적이 있습니다. 유니티 쉐이더에 대해 본격적으로 들어가기 전에 역사에 대해 자세히 살펴보고..
[Unity 이슈] InitializeOnLoad 주의 사항
·
유니티(Unity)/이슈 도감
✍️ 개요   이번에 커스텀 패키지를 제작하면서 InitializeOnLoad 어트리뷰트를 사용하면서 시행착오를 많이 겪었죠. InitializeOnLoad를 통해 호출되는 로직은... 매우 조심스럽게 다뤄야 한다는 사실을 뼈저리게 경험했답니다. 지금부터 InitializeOnLoad을 사용할 때 주의할 점을 정리하도록 하겠습니다.      📌 문제 분석  [Unity 이슈] 커스텀 패키지 Addressable 이슈✍️ 개요   [ Custom Package 제작하기 ] [Unity 기능] 커스텀 패키지 제작하기✍️ 개요 유니티를 사용해온 프로그래머라면 사용자 패키지(Custom Package)을 만들고 싶다는 생각이 든 적 있지 않나요?gus6615.tistory.com 이 이슈는 커스탬 패키지를 제..
[Unity 이슈] 커스텀 패키지 Addressable 이슈
·
유니티(Unity)/이슈 도감
✍️ 개요   [ Custom Package 제작하기 ] [Unity 기능] 커스텀 패키지 제작하기✍️ 개요 유니티를 사용해온 프로그래머라면 사용자 패키지(Custom Package)을 만들고 싶다는 생각이 든 적 있지 않나요? 저는 최근에 게임잼이나 신작을 준비할 때마다 빠르게 시작하기 위한 탬gus6615.tistory.com  흐에에에에--! 매우 험난했던 커스텀 패키지 제작기... 사실 이슈가 많았기 때문에 한 번 더 포스팅하도록 하겠습니다. 분명 나처럼 고생하신 분들이 있을거야...      📌 문제 분석  기분 좋게 새로운 프로젝트를 열어서 커스텀 패키지를 설치했어요. 그리고 Sample도 설치해서 잘 작동하는지 확인하는데...     아니... Addressable이 왜 다 빠져있는거임....
[Unity 이슈] 커스텀 패키지 종속성 문제
·
유니티(Unity)/이슈 도감
📌 개요   [ Custom Package 제작하기 ] [Unity 기능] Custom Package 제작하기✍️ 개요  유니티를 사용해온 프로그래머라면 사용자 패키지(Custom Package)을 만들고 싶다는 생각이 든 적 있지 않나요? 저는 최근에 게임잼이나 신작을 준비할 때마다 빠르게 시작하기 위한gus6615.tistory.com  이전에 커스텀 패키지를 만드는 과정을 살펴봤었어요. 그런데 만약 여러분이 스크립트에서 Unity Package Manager을 사용했다면 종속성 문제가 발생했을거예요. 저는 커스텀 패키지에서 Addressable 패키지와 Unitask 패키지를 사용했는데 여기서 문제가 발생했거든요. 그래서 오늘은 종속성 문제를 해결하는 방법에 대해 알아보도록 하겠습니다.     ?..
[Unity 기능] 커스텀 패키지 제작하기
·
유니티(Unity)/기능 구현
✍️ 개요 유니티를 사용해온 프로그래머라면 사용자 패키지(Custom Package)을 만들고 싶다는 생각이 든 적 있지 않나요? 저는 최근에 게임잼이나 신작을 준비할 때마다 빠르게 시작하기 위한 탬플릿이 있으면 좋겠다는 생각을 했습니다. 그래서 자주 사용하는 Manager 모듈을 탬플릿으로 제작하여 사용자 패키지로 만들었습니다. 혹시라도 저처럼 사용자 패키지를 제작하고 싶은 분들을 위해 과정을 공유하도록 하겠습니다.      📌 커스텀 패키지 레이아웃 설정  위 하이러키 구조가 유니티가 권장하는 커스텀 패키지 레이아웃입니다. 다소 복잡해보이지만 모두 구축할 필요는 없습니다. 그래서 저는 package.json, Editor, Runtime, Samples~만 구축하도록 하겠습니다. 만약 자세한 내용에..
[Unity 최적화] UI SetActive 호출 타이밍
·
유니티(Unity)/최적화 기법
✍️ 개요      📌 UI SetActive 최적화 방법 /// Bad Case (총 3회의 dirty 플래그 처리)Image img = GetComponent();img.gameObject.SetActive(true); //dirty 플래그 처리img.fillAmount = 1f; //dirty 플래그 처리img.transform.position = Vector3.zero; //dirty 플래그 처리/// Good Case (총 1회의 dirty 플래그 처리)Image img = GetComponent();img.fillAmount = 1f;img.transform.position = Vector3.zero;img.gameObject.SetActive(true); //d..
[Unity 최적화] 오디오(사운드) 최적화
·
유니티(Unity)/최적화 기법
📌 개요    게임에서 오디오 리소스는 많은 메모리 사용량을 차지하는 에셋 중 하나입니다. 특히 3D 환경을 지원하는 기능을 2D에서 사용하도록 설정하여 메모리 혹은 성능 최적화에 실패하기도 합니다. 그래서 오늘은 Unity에서 오디오를 최적화하는 방법에 대해 살펴보겠습니다.     📌 Audio Import 세팅 최적화  Force To Mono오디오를 단일 채널 사운드로 다운 믹싱합니다.입체 음향이 사라지지만 비약적으로 용량을 줄일 수 있습니다.단, 모노 음원이라면 아무런 영향이 없음3D 게임이 아니라면 체크합니다.Normalize : 사운드 정규화 (일반적으로 체크)단, 이미 사전에 볼륨 작업을 했다면 체크 해제  Load In Background비동기 방식으로 백그라운드에서 로딩됩니다.천천히 ..
[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을 굳이 생성하고 사용하는 이유는 뭘까요?  ..