✔ TIL (오늘 핵심 정리)
1. 웨이브 시스템 구조
- GameState에서 CurrentWaveIndex, RemainingTime으로 웨이브 관리
- Timer로 1초 단위 업데이트
- 웨이브 종료 시 다음 웨이브로 전환 또는 클리어 처리
2. 액터 전체 제어 (TActorIterator)
- 레벨 안 특정 타입 액터를 전부 탐색하는 기능
- 예: 모든 LavaFloor 속도 변경
for (TActorIterator<ALavaFloor> It(GetWorld()); It; ++It)
{
It->SetRiseSpeed(값);
}
- “단발성 전체 변경”에 적합
3. 충돌 시스템 정리
- Physics는 반드시 RootComponent에 적용
- Mesh에 Physics 걸면 구조 깨짐 (바닥 뚫림 문제 발생)
- 데미지는 Overlap 또는 Hit 이벤트로 처리
- LaunchCharacter로 넉백 구현 가능
4. 웨이브 연동 스폰 구조
- BallSpawner 여러 개 관리 시 TArray<ABallSpawner*> 사용
- GetAllActorsOfClass 또는 Iterator로 초기 등록
- WaveIndex에 따라 활성/비활성 제어
5. 클리어 시스템 구조
- 클리어 전용 맵 (ClearLevel) 생성
- GameMode에서 UI 생성 후 Viewport 추가
- UMG로 점수, 버튼, 배경 구성
- GameInstance로 점수 유지
6. UI 구조 (UMG + C++)
- Widget Blueprint = 디자인
- C++ Widget = 기능 (점수, 버튼 이벤트)
- BindWidget으로 UI 요소 연결
7. 입력 모드 문제 해결
- 레벨 이동 시 PlayerController 설정 유지됨
- ClearLevel에서는 반드시 다시 설정 필요
bShowMouseCursor = true;
SetInputMode(UIOnly);
8. GameInstance 주의점
- 레벨 이동해도 유지됨
- 하지만 코드에서 TotalScore = 0 하면 초기화됨
- “초기화 위치” 반드시 관리 필요
✔ 핵심 한 줄 요약
👉 “게임 구조는 GameState(진행), GameInstance(데이터 유지), GameMode(UI), Actor(기능)으로 역할을 나눠야 안정적이다”
'내일배움캠프_언리얼9기' 카테고리의 다른 글
| 내일배움캠프 49일차 TIL 2026/07/01 (0) | 2026.07.01 |
|---|---|
| 내일배움캠프 48일차 TIL 2026/06/30 (0) | 2026.06.30 |
| 내일배움캠프 46일차 TIL 2026/06/26 (0) | 2026.06.26 |
| 내일배움캠프 45일차 TIL 2026/06/25 (0) | 2026.06.25 |
| 내일배움캠프 44일차 심화 TIL 2026/06/24 (0) | 2026.06.24 |