img
i
회원가입시 광고가 제거 됩니다
코딩초보 유니티 플레이어 스크립트 구조화 안녕하세요~요즘 원신 같은 액션 RPG 게임을 연습 삼아 작게 만들어보고
안녕하세요~요즘 원신 같은 액션 RPG 게임을 연습 삼아 작게 만들어보고 있는데요!플레이어는 3명이 있고, 각 캐릭터의 스탯은 ScriptableObject로 만들어서 관리하고 있어요.이 방식이 괜찮은 구조인지, 더 나은 방법이 있을지 궁금합니다.그리고 캐릭터마다 사용하는 무기랑 공격 모션이 다 다르다 보니, 이걸 어떻게 효율적으로 관리해야 할지도 고민이에요.혹시 좋은 방법이나 참고할 만한 구조 있으면 알려주시면 감사하겠습니다
업계 뉴비가 찾아오니 흥분을 감출수가 없네요
제가 작성한 글이 미흡할 수 있으니, 댓글로 추가적인 질문을 달아주세요(늦을 수 있다는 점 양해 부탁드립니다)
[저는 게임 개발자는 아니지만, 한때 개발자이고 현재 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 프로젝트 검색해보시면 너무너무 많습니다~
https://learn.unity.com/ image Unity Learn
Free tutorials, courses, and guided pathways for mastering real-time 3D development skills to make video games, VR, AR, and more.
learn.unity.com