본문으로 건너뛰기
CHOI HONGSU
1 min read

스테이트 모션 클립 자동 교체 툴

 

새 스킨 코드가 부여된 AnimationClip을 AnimatorController에 자동으로 재연결하는 Unity 에디터 툴

Problem

쿠키 캐릭터는 스킨마다 별도 AnimationClip을 가진다. 기존 스킨(A001)으로 제작된 AnimatorController에 새 스킨(VR001) 클립을 연결하려면, State Machine의 모든 State를 열어 Motion을 하나씩 교체해야 한다.

 

 

 

 

State 수가 많아질수록 작업 시간이 선형으로 증가하고, 누락·오연결 실수가 생기는 반복 수작업 문제.

Implementation

  1. 01

    매칭 키: 스킨리스 이름 (SkinlessName)

    클립 이름에서 스킨 코드 파트(parts[2])를 제거한 문자열을 키로 사용.

     

     

    새 스킨 폴더의 클립들로 같은 방식으로 키를 만들어 Dictionary를 구성, AnimatorController의 각 State의 Motion을 키로 조회해 교체.

    안전 처리

    케이스처리
    Clip_ 접두사 클립보존 (특수 클립 — 교체 제외)
    키 중복 (Ambiguous)교체 건너뜀, 경고 로그
    매칭 없음 (Missing)Clear If Missing ON이면 null, OFF면 기존 유지
    이미 연결된 클립Overwrite Existing ON/OFF로 제어

    서브 모듈: Category Suffix 매칭

    스킨리스 이름 매칭이 안 되는 경우를 위한 보조 매처. In_ / Out_ / Emotion_ / BattlePose_ 카테고리 키워드 이후 suffix로 매칭.

  2. 02

    StateMachine 재귀 순회

    중첩 Sub-StateMachine까지 완전히 탐색하는 재귀 WalkStates.

     

Conclusion

  • Controller + 새 스킨 클립 폴더 지정 → Execute Relink 1회로 전체 State 자동 교체
  • 결과 요약: Changed / Missing / Ambiguous 카운트 + 상세 로그
  • Clip_ 보존 처리로 오연결 사고 방지