데브허브 | DEVHUB | RTS Game Tutorial | Unity | Episode 28 - Unit Training #1RTS Game Tutorial | Unity | Episode 28 - Unit Training #1
- RTS 게임에서 자원 수집 시스템 이후, UI를 통해 유닛을 생성하고 훈련하는 기능을 추가합니다. ⚔️
- 건물과 유닛을 위한 별도의 UI 탭을 구현하여 사용자가 쉽게 전환할 수 있도록 합니다. 🏗️
- 기존 건물 구매 슬롯과 유사하게 유닛 구매 슬롯을 설정하고, 각 유닛에 맞는 스프라이트와 데이터베이스 ID를 할당합니다. 🏷️
- ScriptableObject 기반의 데이터베이스에 보병 유닛을 추가하고, 고유 ID, 건물 유형 '없음', 크기 '0', 프리팹 '없음'으로 설정합니다. 📊
- 유닛 훈련에 필요한 자원(예: 25골드)과 건물 의존성(예: 커맨드 센터)을 정의하여 게임 플레이의 깊이를 더합니다. 💰
ObjectDatabase 스크립트에 UnitType 열거형(None, InfantryUnit, Harvester 등)을 추가하고, ObjectData에 thisUnitType 속성을 포함하여 유닛 데이터를 체계화합니다. 🧬
- UI 의존성 검증을 통해 커맨드 센터 건설 전에는 유닛 탭이 비어있고, 건설 후에만 유닛이 활성화되도록 하여 게임 진행 흐름을 제어합니다. ✅
- 건물은 그리드 기반 배치 시스템을 사용하지만, 유닛은 건물 옆에 직접 인스턴스화하는 다른 시스템을 사용하여 각 유형에 맞는 생성 방식을 적용합니다. 🗺️
BuySystem 스크립트에 ObjectDatabase 참조를 추가하고, 유닛 훈련 로직을 통합하여 구매 시스템의 기능을 확장합니다. 🛒
BuySystem 내에서 UI 관련 코드와 유닛 훈련 코드를 'Region'으로 분리하여 스크립트의 가독성과 유지보수성을 높입니다. 📁
BuySystem에 isItemABuilding 헬퍼 메서드를 추가하여 클릭된 아이템이 건물인지 유닛인지 효율적으로 판별합니다. ❓
BuySlot.OnClick 메서드를 확장하여 클릭 시, 아이템 유형에 따라 건물 배치 또는 유닛 훈련 시작 로직을 분기 처리하도록 합니다. 👆
BuySystem 내에서 StartUnitTraining 메서드를 구현하여 유닛 유형을 확인하고, 유닛 프리팹을 인스턴스화하는 InstantiateUnit 메서드를 호출합니다. 🚀
- 유닛 프리팹의 이름이 데이터베이스에 저장된 유닛 이름과 정확히 일치해야 하며, 프리팹은 'Resources' 폴더에 위치해야 함을 강조하여 오류를 방지합니다. 🔗