[Unity 쉐이더] 프로퍼티 생성
·
유니티(Unity)/쉐이더
✍️ 개요  쉐이더 프로퍼티는 쉐이더에서 정의된 변수로, Material을 통해 제어할 수 있는 값을 의미합니다. Unity의 Inspector 창에서 쉽게 설정할 수 있으며, 이 값을 통해 Mesh에 적용되는 시각적 표현을 제어할 수 있습니다. 오늘은 주요 쉐이더 프로퍼티에 대해 알아보고, 생성하는 방법을 다루도록 하겠습니다.      📌 프로퍼티란?  프로퍼티(Property) : Material을 통해 제어할 수 있는 값 위 사진처럼 프로퍼티를 추가하면 Inspector에서 확인할 수 있습니다. 만약 Inspector에서 Color을 변경하면 변경된 Color가 쉐이더 코드에 적용됩니다. 그래서 동일한 쉐이더를 사용하더라도, 서로 다른 Material을 생성할 수 있습니다.    프로퍼티는 쉐이더..
[Unity 쉐이더] 메터리얼과 쉐이더 적용
·
유니티(Unity)/쉐이더
✍️ 개요  오늘은 메터리얼과 쉐이더를 직접 적용하는 간단한 실습을 해보도록 하겠습니다. 실습을 통해 쉐이더와 메터리얼이 Unity에서 어떻게 동작하는지 이해할 수 있습니다.      📌 메터리얼 생성  ① Model 생성하기 먼저, 쉐이더와 메터리얼을 적용할 3D Object을 만듭니다. [ Hierarchy ] - [ 우클릭 ] - [ 3D Object ] - [ Cube ] 을 선택하세요.    그러면 위처럼 Cube 하나가 생성됩니다.    Cube을 선택하면 Inspector 창을 살펴보면 Mesh와 Material을 확인할 수 있습니다. 기본적으로 URP에서 제공하는 Material이 설정되어 있습니다. Mesh = Model을 구성하는 Vertices 데이터Material = Mesh에 적..
[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을 굳이 생성하고 사용하는 이유는 뭘까요?  ..