[2025_10_27]다양한 미니게임이 있는 메타버스만들기-3(AnimatorOverrideController,RuntimeAnimatorController)
2025. 10. 27. 20:06ㆍTIL
개념 정리
RuntimeAnimatorController
- 역할: Animator의 컨트롤러를 나타내는 부모 클래스
- 특징: Animator와 AnimatorOverrideController를 모두 참조 가능
- 용도: 컨트롤러 타입에 구애받지 않고 유연하게 애니메이터를 다룰 수 있음
AnimatorOverrideController
- 역할: 기존 애니메이션 클립을 덮어쓰는 컨트롤러
- 특징: RuntimeAnimatorController를 상속받음
- 용도: 베이스 애니메이터의 구조는 유지하면서 특정 애니메이션만 교체
상속 관계
RuntimeAnimatorController (부모)
↑
AnimatorOverrideController (자식)
RuntimeAnimatorController 타입으로 선언하면 AnimatorOverrideController도 할당 가능 (다형성)
실제 사용 예시
Product ScriptableObject 구조
csharp
public enum ProductType { CharacterSkin, Vehicle }
[CreateAssetMenu(fileName = "New Product", menuName = "Shop/Product")]
public class Product : ScriptableObject
{
public int productID;
public string productName;
public Sprite productIcon; // UI에 표시할 스프라이트
public Sprite productSprite; // 실제 적용될 스프라이트
public RuntimeAnimatorController animatorOverride; // 애니메이션 컨트롤러
public int price;
public ProductType type;
public string description;
}
사용 시나리오
- ScriptableObject 생성: 상점에 판매할 스킨/탈것 아이템마다 Product 에셋 생성
- 애니메이션 할당: animatorOverride 필드에 AnimatorOverrideController 또는 Animator할당
- 런타임 적용: 플레이어가 스킨/탈것을 변경하면 해당 애니메이션으로 교체
장점
- 유연성: RuntimeAnimatorController 타입 덕분에 일반 Animator나 Override 모두 사용 가능
- 재사용성: 같은 베이스 애니메이터에서 클립만 바꿔 다양한 스킨 구현
- 관리 용이: ScriptableObject로 아이템별 애니메이션을 독립적으로 관리
핵심 요약
- AnimatorOverrideController: 특정 애니메이션 클립을 덮어쓰는 기능
- RuntimeAnimatorController: 두 가지 컨트롤러를 모두 담을 수 있는 부모 타입
- 활용: 플레이어 커스터마이징(스킨/탈것) 시스템에서 애니메이션 동적 교체
'TIL' 카테고리의 다른 글
| [2025_10_29]오늘 배운것.. 회의... 새프로젝트 기획 (0) | 2025.10.29 |
|---|---|
| [2025_10_28]메타버스_미니게임 마무리 (1) | 2025.10.28 |
| [2025_10_24]다양한 미니게임이 있는 메타버스만들기-2(유니티 생명 주기 및 주기에 따른 스크립트 실행 순서 관련) (0) | 2025.10.24 |
| [2025_10_23]다양한 미니게임이 있는 메타버스만들기(GameManager캐싱해서 쓰다가 발생한 오류 및 저장 데이터 Struct로 구조변경->메모리 효율성) (0) | 2025.10.23 |
| [2025_10_22]DDD아키텍쳐 (0) | 2025.10.22 |