학습 동기
튜토리얼 시스템을 점차 게임 진행과 연동시키는 작업을 하면서, 플레이어의 행동(이동, 상호작용, 스킬 사용 등)을 정확히 감지하고 튜토리얼 흐름을 자연스럽게 연결하는 방법에 대해 고민하였다. 또한, 룬과 스킬 시스템을 통합한 구조 내에서 EventBus 및 Action 활용을 통해 학습 진행을 감지하는 방법을 실험하였다.
학습 내용
- 튜토리얼 시스템 분기 구조 구현
- TutorialManager가 currentStep을 기준으로 튜토리얼 분기를 진행.
- DialogueManager의 결과 seq를 통해 다음 스텝으로 진행 (TutorialStep(int step)).
- currentStep이 의도치 않게 초기화되는 문제를 조건 검사로 해결 (if (currentStep == -1)).
- 튜토리얼 진행 조건으로 플레이어의 스킬/룬 사용 감지
- 스킬 시스템에 onUseSkill Action을 활용하여 플레이어의 스킬 사용 시점에 콜백 등록 가능.
- Skill.SetStart() 등으로 액션 등록 가능하며, 룬 장착 시 ApplyRunes() 내부에서 이벤트 초기화.
- 룬 장착 감지를 위한 이벤트 연동
- RuneSlotController에서 SkillChangedEvent를 EventBus로 발행.
- TutorialManager 또는 별도 핸들러에서 EventBus.Subscribe()로 해당 이벤트를 감지해 튜토리얼 스텝 갱신 가능.
- EventBus에서 이벤트 키 추적
- 기존 EventBus.Subscribe(key, Action) 구조에서는 콜백 내에서 어떤 키로 호출되었는지 알 수 없음.
- 이를 해결하기 위해 Action<object>로 키를 전달하거나, 람다로 감싸서 키를 직접 전달하는 방식으로 대체.
- 씬 전환 중 OnTriggerExit2D 무시 처리
- OnTriggerExit2D가 씬 로딩 시 발생하는 문제를 gameObject.scene.isLoaded 검사로 해결.
- 오브젝트 풀 예외 처리
- ObjectPoolManager.CreatePool() 호출 시 프리팹이 null인 경우 예외 발생.
- prefab이 null인지 체크하는 예외 방어 코드 필요 (if (prefab == null) return; 등).
'Unity > Unity 개발' 카테고리의 다른 글
| 드롭 시스템 구현 및 디버깅 (3) | 2025.07.11 |
|---|---|
| 벡터 이미지에 도트 셰이더 적용하기 (0) | 2025.07.10 |
| 튜토리얼 시스템 구조 설계 및 구현 (0) | 2025.07.08 |
| NPCController 구조 설계 정리 (0) | 2025.07.07 |
| 대화 다이얼로그 & 상호작용 토글 UI (0) | 2025.07.04 |