📌 개요


[ Unity 패키지 : AllIn1SpriteShader (기본) ]
[Unity 패키지] AllIn1SpriteShader (기본)
📌 개요 최근에 AllIn1SpriteShader 패키지를 구매해서 다양한 연출을 연습하고 있습니다. 이 과정에서 제가 겪은 경험을 토대로 AllIn1SpriteShader을 사용하는 방법과 주의 사항에 대해 정리해보
gus6615.tistory.com
이전 포스터에서 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 |