📌 개요
[ Unity 패키지 : AllIn1SpriteShader (기본) ]
이전 포스터에서 AllIn1SpriteShader 패키지에 대해 간단히 살펴봤습니다.
오늘은 AddAllIn1Shader 컴포넌트 기능에 대해 살펴보고,
Prefab으로 제작하는 방법과 인스턴싱에 대해 살펴보겠습니다.
📌 AddAllIn1Shader 컴포넌트
AddAllIn1Shader 컴포넌트 : Shader와 Material 설정을 쉽게 관리해주는 컴포넌트
① Deactivate All Effects : 현재 Material에 적용된 모든 Shader 효과를 제거
② New Clean Material : 현재 Material을 새로운 Material 인스턴스로 교체
※ Material 변경 유무 차이 정도입니다.
③ Create New Material With Same Properties (중요)
현재 Material의 속성을 유지한 채 새로운 Material로 인스턴싱합니다.
GameObject 복사/붙여넣기 하여도 Material은 공유됩니다.
그래서 서로 다른 효과를 주고 싶다면 위 버튼을 눌러 새로운 Material을 생성해야 합니다.
④ Save Material To Folder (중요)
현재 GameObject에 적용된 Material을 Unity 에셋 폴더에 저장합니다.
이것은 GameObject를 Prefab으로 저장할 때 필수적인 기능입니다.
만약 여러분이 Hue Shift을 체크한 체 Prefab으로 저장했다고 가정하겠습니다.
이제 Prefab을 Scene에 끌어다 놓아보겠습니다.
두둥... 기껏 만들어 놓은 Shader가 없어졌습니다.
그 이유는 Prefab으로 직렬화하여 저장했지만, Material은 저장하지 않았기 때문입니다.
그래서 Save Material To Folder 버튼을 눌러 Material도 함께 저장해야 합니다.
(+ 만약 Save Material To Folder 경로 문제가 발생한다면? )
위 경로로 이동하여 Material을 저장할 Folder을 지정해주시면 됩니다.
⑤ Apply Material To All Childer : 부모 오브젝트에 적용된 Material을 모든 자식 오브젝트에 적용
⑥ Render Material To Image : Material 출력 결과를 이미지 파일로 저장하는 기능
⑦ Sprite Atlas Auto Setup (중요)
Sprite Atlas에 묶인 Sprite에 연출을 처리하기 위한 셋업 기능입니다.
일반적인 Sprite는 하나의 Texture을 사용하며, uv가 0 ~ 1의 값을 가집니다.
하지만 Sprite Atlas에 속한 Sprite는 uv 값의 범위가 각각 다릅니다.
그래서 Sprite Atlas Auto Setup을 선택하여 유효한 uv 값을 계산하도록 합니다.
(Sprite Atlas에 속한 Sprite을 다룰 때 사용)
📌 Prefab 인스턴싱 (+ 독립적인 Shader)
var mineralView = AddressableUtil.Instantiate<MineralView>("MineralView_Exist");
이제 Prefab을 스크립트를 통해 인스턴싱 하도록 하겠습니다.
한 100 여개 정도 만들어서 테스트 해보겠습니다.
하지만... 보시다시피 모두 동일한 Material을 가지고 있습니다.
어떻게 독립적으로 Shader가 동작하게 끔 할 수 있을까요?
① 방법 1 : Sprite Atlas라면 Sprite Atlas Auto Setup을 누르고 Use Matieral Instance ~ 을 체크
② 방법 2 : Animator을 추가하여 Shader Property을 수정
Animator에서 Animation Clip을 수행하면 독립적인 Material로 처리됩니다.
(+ SetPass Call에 주의합시다)
확인해보니 독립적으로 Material이 작동하면 SRP Batching이 안되더군요.
그래서 모바일 게임 같은 최적화가 필요한 경우에는 가급적 많이 사용하지 않는게 좋겠습니다.
'유니티(Unity) > 유용한 패키지 모음' 카테고리의 다른 글
[Unity 패키지] AllIn1SpriteShader (기본) (0) | 2025.01.09 |
---|---|
[Unity 패키지] Hot Reload : 동적 코드 수정 (0) | 2025.01.04 |