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

(캐릭터가 100개면 이런걸 100번이나 해야한다고;;;)
그래서 조금이라도 노가다를 줄이기 위해서 Sprite Swap 기능을 사용했다.
우선 캐릭터 애니메이션 효과를 만들기위한 준비로는 어렵지 않다.
Sprite Library Asset을 원하는 폴더에 만들어준다.

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

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

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

Ctrl+S는 습관처럼 눌러주자.여기까지 했으면 Sprite Library Asset 파일은 우선 완성 되었다.
이제 애니메이션 효과를 넣을 Sprite Rederer 컴포넌트가 추가된 GameObject에 Sprite Resolver 컴포넌트와 Sprite Library 컴포넌트를 추가해준다.

그리고 애니메이션을 재생 시킬 앞에서 만든 Sprite Library Asset을 Sprite Library 컴포넌트에 추가해주자.
그러면 카테고리별로 라벨링 된 Sprite가 쭉 나열된다.
그러면 이제 애니메이터와 애니메이션만 만들어주면 된다.
이제부터가 중요한데, 애니메이션 클립은 일반적으로 만들때와 동일한 방식으로 만들면 되지만 녹화를 켜고나서 Sprite 대상을 원본으로 지정하는게 아니고 Sprite Resolver에 있는 Sprite를 대상으로 애니메이션 클립에 지정해준다.


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

(물론 리소스 파일의 이름을 바꾼다거나 구조화 하거나 하는 등의 전처리 작업이 필요하다. 그런건 사전에 규칙을 정해두고 하면 된다.)
이제 만들어준 Sprite Library Asset 파일을 Sprite Library에서 교체만 해주면 교체해준 Sprite Library Asset으로 애니메이션을 재생해준다!
이제 설정을 다 했으니 결과물을 보자면


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

끝!