[TIL] Unity Sprite Swap (Sprite Library / Sprite Resolver) 맛보기

Dreamer·2024년 10월 11일

1. 오늘 주제

오늘 주제는 애니메이션을 덜 노가다 하게 해주는 Sprite Swap에 대해서 작성해볼까 한다.
Sprite Swap이란 공식 문서에 따르면 Sprite Swap은 런타임에 GameObject의 렌더링된 Sprite를 변경하는 것을 말하며, 2D 액터나 다른 GameObject를 구성하는 Sprite를 애니메이션화할 때 유용하다고 한다.
그렇다. 강의를 들으면서 캐릭터의 애니메이션 클립과 애니메이터 컨트롤러를 매번 캐릭마다 만들어주자니 여간 귀찮은게 아니더라...
노가다
(캐릭터가 100개면 이런걸 100번이나 해야한다고;;;)

그래서 조금이라도 노가다를 줄이기 위해서 Sprite Swap 기능을 사용했다.

우선 캐릭터 애니메이션 효과를 만들기위한 준비로는 어렵지 않다.

  1. Sprite Renderer가 있는 GameObject에 Sprite Resolver를 추가한다.

2. Sprite Library Asset 만들기

Sprite Library Asset을 원하는 폴더에 만들어준다.
노가다
(2D 영역에 있다.)
만들어준 Sprite Library Asset 파일을 더블클릭 해보면

Sprite Library Editor 창이 열린다.
그 다음 카테고리를 정해준다. (카테고리가 일종의 애니메이션 클립의 이름이 된다.)

추가 했으면 카테고리 별로 이미지를 넣어준다.

  • 여기서 주의할 점은 가급적이면 label 이름을 전체적으로 일관성 있게 바꿔주는게 좋다. 이유는 나중에 동적으로 label을 사용하는 경우에 이름이 다 다른 형태가 되면 골치 아파진다..
  • Auto Save가 켜져 있지만 그래도 혹시 모르니 Ctrl+S는 습관처럼 눌러주자.

여기까지 했으면 Sprite Library Asset 파일은 우선 완성 되었다.

3. Sprite Resolver

이제 애니메이션 효과를 넣을 Sprite Rederer 컴포넌트가 추가된 GameObjectSprite Resolver 컴포넌트와 Sprite Library 컴포넌트를 추가해준다.

그리고 애니메이션을 재생 시킬 앞에서 만든 Sprite Library AssetSprite Library 컴포넌트에 추가해주자.

그러면 카테고리별로 라벨링 된 Sprite가 쭉 나열된다.

그러면 이제 애니메이터와 애니메이션만 만들어주면 된다.

4. Animation / Animator Controller

이제부터가 중요한데, 애니메이션 클립은 일반적으로 만들때와 동일한 방식으로 만들면 되지만 녹화를 켜고나서 Sprite 대상을 원본으로 지정하는게 아니고 Sprite Resolver에 있는 Sprite를 대상으로 애니메이션 클립에 지정해준다.


그러면 PropertySprite 대신 Sprite Resolver.Sprite Hash가 추가 된다. 그러면 결국 애니메이션 클립은 지정된 hash 값에 따라 Sprite를 바꿔준다는 말인데, 결과 적으로 보면 Animation ClipAnimation Controller를 한 세트만 만들어주면 최소한 비슷한 캐릭터에 대한 애니메이션 작업은 앞에서 했던 Sprite Library Asset만 만들어주면 Animation ClipAnimation Controller 안해도 된다는 말이다... (차라리 Sprite Library Asset을 100개 만드는게 낫지;;)

(물론 리소스 파일의 이름을 바꾼다거나 구조화 하거나 하는 등의 전처리 작업이 필요하다. 그런건 사전에 규칙을 정해두고 하면 된다.)

이제 만들어준 Sprite Library Asset 파일을 Sprite Library에서 교체만 해주면 교체해준 Sprite Library Asset으로 애니메이션을 재생해준다!

이제 설정을 다 했으니 결과물을 보자면


지금 처럼 ScriptableObject에 Sprite Library Asset을 추가해주면 동적으로 캐릭터를 선택할 수 있게 해준다.

끝!

profile
새로운 시작

0개의 댓글