개요
게임 플레이에서 발생하는 동작(애니메이션 재생, 어빌리티 실행, 이펙트/사운드 재생, 타겟팅 등)을 공통 인터페이스를 가진 Property로 추상화하고, SerializeReference 기반 다형성 리스트로 조합할 수 있도록 설계했습니다.
즉, “이벤트/조건이 발생했을 때 무엇을 할지”를 코드가 아니라 데이터(인스펙터 설정)로 구성할 수 있는 시스템입니다.
왜 만들었나?
일반적으로 기능이 늘어날수록 이런 문제가 커집니다.
- 이벤트마다 처리 코드가 점점 길어짐 (if/else, switch, 하드코딩)
- 시스템 간 의존성 증가 (HitReaction이 VFX/SFX/Animation/Ability를 직접 다룸)
- “조합 가능한 행동”을 만들기 어려움 (하나 추가할 때마다 코드 수정)
그래서 실행 단위를 Property로 분리하고, 런타임에서 Property 리스트를 순차 실행하는 형태로 바꿨습니다.
장점
1) 확장성
새로운 동작이 필요하면 BaseProperty를 상속한 새 타입만 추가하면 됩니다.
기존 시스템(피격/버퍼/어빌리티 등)을 건드릴 필요가 없습니다.
2) 조합성
하나의 이벤트에서도 여러 Property를 순서대로 조합할 수 있어,
연출/로직을 데이터로 빠르게 프로토타이핑할 수 있습니다.
3) 의존성 감소
각 시스템이 VFX/SFX/Ability를 직접 호출하지 않아도 되고,
Property가 필요한 컴포넌트만 접근하게 만들어 결합도를 낮출 수 있습니다.
4) 유지보수성
동작 변경이 “코드 수정”이 아니라 “리스트 구성 변경”으로 끝나는 경우가 많아져
실험/튜닝/버그 수정 비용이 줄어듭니다.



'유니티 > Framework' 카테고리의 다른 글
| 게임 플레이 태그 시스템 (GameplayTag System) (0) | 2026.02.19 |
|---|---|
| 입력 버퍼 시스템 (Input Buffer System) (0) | 2026.02.19 |
| Combat System - Document (1) | 2024.06.09 |