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

애니메이션 클립 재사용 방안

 

Period
2026.1
Engine
Unity 6 (6000.0.60f1) / URP 17.0.4
Platforms
AOS · iOS
Team
TA

광장 캐릭터 수에 비례해 AnimationClip이 중복 인스턴스화되는 버그를 Memory Profiler로 특정. 근본 원인(FxClipEventRuntime)을 디버깅.

Problem

광장 화면에 같은 캐릭터가 여러 명 등장할 때, AnimationClip 메모리가 캐릭터 수에 정비례해서 증가하는 현상이 발견됐다.

측정값:

  • 동일 캐릭터 10개 — AnimationClip 400MB (캐릭터당 40MB × 10)
  • 기대치 — 40MB (클립 공유 시)

재현: Unity Memory Profiler 스냅샷에서 CH_MelonSoda_A001_Emotion_Happy_01 클립이 472.4 KB짜리 인스턴스로 5개 이상 동시에 올라와 있는 것을 확인.

Issue Analysis

  1. 01

    Issue Analysis

    CookieIngameAnimatorController
    └─ FxClipEventRuntime (Clip 기반 EventFX)
    └─ Instantiate(clipAsset) ← 원본 Release 후 복사본 생성

    FxClipEventRuntime이 이벤트 FX 처리를 위해 AnimationClip을 Instantiate로 복사하고 원본을 해제하는 구조였다. 캐릭터 인스턴스마다 이 과정이 반복되어, 동일한 클립 에셋이 캐릭터 수만큼 독립 복사본으로 메모리에 상주.

    • AnimatorOverrideController 없이 원본 클립을 직접 복사 → Addressables 공유 참조 끊김
    • 광장 유저 수 증가에 따라 메모리가 선형적으로 증가
  2. 02

    Solution Approach

    캐릭터 A ─┐
    캐릭터 B ─┼─ 각자의 AnimatorOverrideController → 공유 AnimationClip 에셋 참조
    캐릭터 C ─┘

     

     


    기획/아트팀 협의 결과: 인게임/광장 캐릭터에 Clip 기반 EventFX를 사용하지 않는 방향으로 제거 진행.

Conclusion

결과

수정 전수정 후
동일 캐릭터 10개 AnimationClip~400 MB~40 MB
원인FxClipEventRuntime Instantiate 누적

Tradeoffs & Future Work

Tradeoffs

  • 클립 기반 EventFX 기능 자체를 제거하는 방향 — 해당 기능이 인게임에서 실제로 필요한지 여부를 기획팀과 확인 필요했음
  • AnimatorOverrideController 공유 구조 전환 시 클립 런타임 교체 로직 재검토 필요
애니메이션 클립 재사용 방안 · Cookie Run: Oven Smash · Choi Hongsu · Hongsu