학습 동기
이번 팀프로젝트에서 몬스터파트를 맡았는데, 이를 설계하는 과정에서 궁금증이 생겼다.
아직 드래그&드롭방식의 유니티를 다루는게 익숙치 않아서 몬스터의 종류별로 프리팹을 만들어서 각기 다른 이미지, 각기 다른 데이터를 넣어주는거보다, 몬스터의 구조를 가진 빈 오브젝트들로 이루어진 하나의 프리팹을 만들어서 이를 몬스터 생성시에 함수로 데이터를 주입해주면 조금 더 편한 구조를 가진 몬스터 생성방식이 나오지않을까? 라는 생각이였다. 이를 두가지 상황에 따라 비교해보았다.
두가지 방식 비교
방식 1: 프리팹 1개 + 데이터/스킬/이미지 코드 주입
장점
- 몬스터 프리팹을 1개만 유지 → 프리팹 관리가 매우 간단.
- 몬스터 추가 시 ScriptableObject 데이터와 스프라이트만 추가하면 끝.
- 몬스터 수가 많아져도 프리팹 수 증가 없음.
- 데이터 중심 관리가 가능 → 밸런스 조정, 콘텐츠 추가 용이.
단점
- 코드 복잡도 증가 (애니메이션, Collider, 스킬, Sprite 등 모든 요소를 코드로 주입해야 함).
- 런타임 오류 위험 증가 (데이터 누락, Sprite 설정 실수 등).
- 비주얼 요소(Animator, Collider) 설정이 코드 주입으로는 번거롭거나 어려움.
적합 상황
- 몬스터 수가 매우 많거나, 동적으로 다양한 몬스터 생성이 필요한 게임 (예: 로그라이크, 카드 RPG).
- 몬스터 추가/수정이 데이터와 이미지 중심으로 이루어지는 경우.
방식 2: 몬스터별 프리팹 생성
장점
- 프리팹마다 Animator, Collider, Sprite, 기타 설정 인스펙터에서 직관적으로 설정 가능.
- 코드 복잡도 낮음 → Instantiate 후 데이터 읽기만 하면 됨.
- 비주얼 커스터마이징이 자유로움 (예: 크기가 다른 Collider, 보스 연출 등).
- 런타임 오류 가능성 낮음 → 사전에 인스펙터에서 모두 설정됨.
단점
- 몬스터가 많아질수록 프리팹 관리가 번거로움.
- 프리팹 수정 시 중복 작업 발생 가능.
- 새로운 몬스터 추가 시 프리팹 복제/수정 필요.
적합 상황
- 몬스터 수가 적당하거나 (30종 이하),
- 몬스터마다 비주얼적 요소(애니메이션, Collider 크기, 특수 효과 등)가 크게 다를 경우.
정리해본 결과 이렇게 장,단점이 나뉘게 되었다.
이번 팀프로젝트에서 우리팀은 스테이지클리어형 로그라이크 탑다운 게임이다. 여기서 내가 제작하고싶은 몬스터 구조는 스테이지 시작시, 몬스터 타입의 수를 입력하면, 해당 타입의 몬스터가 랜덤하게 생성되게끔 만들고싶었다. 따라서 나는 방식1을 이용하여 게임을 제작할 계획이다.
선택이유
- 스테이지마다 몬스터가 랜덤으로 바뀜 → 몬스터별 프리팹을 만들면 매번 프리팹 연결이 번거로움.
- 몬스터 종류가 스테이지가 늘어날수록 수십~수백 개까지 증가 가능 → 프리팹 관리 어려움.
- Spawner 또는 StageManager에서 몬스터 종류를 결정하고, 몬스터 프리팹(1개)에 Sprite, MonsterData, MonsterSkillData 등을 코드로 주입하면 모든 몬스터 생성 가능.
- 확장성 매우 좋음 → 새로운 몬스터 추가 시 ScriptableObject만 추가하면 됨.
주의점
- Sprite, Animator의 Runtime 주입 방식을 미리 설계해야 함 (Sprite는 주입 쉬움 / Animator는 몬스터별로 클립이 다르면 조금 복잡해질 수 있음).
- Collider 크기 → 데이터로 관리하기 어렵기 때문에, 크기가 매우 다양한 몬스터가 있을 경우 이 부분은 추가 고민 필요.
'Unity > Unity 개발' 카테고리의 다른 글
| 몬스터 스킬 시스템 설계 및 개선 과정 (0) | 2025.05.12 |
|---|---|
| A* 경로 탐색 알고리즘 적용 (0) | 2025.05.12 |
| Unity 2D + Stack 게임 제작 일기(3) (0) | 2025.05.02 |
| Unity 2D + Stack 게임 제작 일기(2) (0) | 2025.05.02 |
| Unity 2D + Stack 게임 제작 일기(1) (0) | 2025.05.02 |