업계 뉴비가 찾아오니 흥분을 감출수가 없네요
제가 작성한 글이 미흡할 수 있으니, 댓글로 추가적인 질문을 달아주세요(늦을 수 있다는 점 양해 부탁드립니다)
[저는 게임 개발자는 아니지만, 한때 개발자이고 현재 devops로 활동하는 사람입니다. 미흡하여도 도움이 되길 바랍니다]
scriptableobject로 캐릭터 스텟을 관리하는것은 좋은 방식입니다.
장단점을 읊자면,
- 런타임에 복제 없이 데이터 공유가 가능합니다(메모리 효율 증가)
- inspector에서 바로 편집 가능하기도 하구여
- 스텟, 성장 곡선, 레벨, 전용 능력 등을 정리하기 나쁴는 않습니다.
조금 더 추가하자면,
>> 스텟은SO + Mono 조합으로 분리하시는것을 추천드립니다.
- ScriptableObject는 “원본 데이터”
- MonoBehaviour는 “런타임 상태” (HP, 버프 등)
두번쨰로 넘어가죠
이거는 게임사마다 다르고, 또 개발자마다 다릅니다
하지만 지금에 와서는 크게 세가지로 개발되고 있는데여
1. 무기 타입별 scriptableobject + 공격모션 animationclip 바인딩
캐릭터에 WeaponData를 장착하면 그에 맞는 공격 모션을 Animator에 적용하거나, AnimatorOverrideController로 덮어씌우는 형식? 정도
2. 캐릭터별 animatot override controller + 상태기반 무기 모션 관리
>> 무기를 바꾸면 해당 무기에 맞는 공격 모션(override controller)이 animator에 즉시 반영되는 형식
3. 무기랑 모션을 분리하는 Iweaponbehavior 인터페이스를 구조화시키는 방식
>> 캐릭터는 이제 무기 타입에 상관없이 인터페이스 명만 호출하는것이죠
>> 이걸 저는 추천드립니다(확장성은 이게 1등입니다, 업데이트와 패치에 강하져)
제가 추천드리는 조합은
캐릭터 스탯 ScriptableObject + 런타임 상태 분리
무기 데이터 ScriptableObject로 무기 속성, 모션, Prefab 통합
공격 모션 AnimatorOverrideController 또는 Interface 분리
스킬/공격 행동 IWeaponBehavior 또는 Command 패턴
무기/캐릭터 바인딩 런타임에 동적으로 장착/교체 구조 구현
이정도..? 가 될듯하네요
Character Stats & Abilities 구조 설계 가이드 << 이거 유니티 공식입니다
추가적인 자료는 깃헙에서 unity 관련 RPG 프로젝트 검색해보시면 너무너무 많습니다~