Contents
접기
728x90
Problem — 어떤 문제가 있었나?
- 맵에서 모든 적 처치 후 포탈이 활성화되어야 하는데, 일부 맵에서는 포탈이 작동하지 않고 F 키 입력도 무시되는 현상이 발생했다.
- WaveSpawner에서는 잘 작동했지만, 2번째 맵인 ZoneSpawner에서는 포탈이 비활성 상태로 유지됨.
1. 두번째 맵에서 포탈이 작동하지 않는오류
Cause — 원인
- 모든 맵에 PortalTrigger가 존재했지만, FindObjectOfType<PortalTrigger>() 방식으로 포탈을 찾다 보니 이전 맵의 포탈 오브젝트가 활성화되어 작동하는 문제가 발생했다.
- 결과적으로 현재 맵의 포탈이 아닌 다른 포탈을 참조하고 있었기 때문에 F 키 입력을 받아도 아무 일도 일어나지 않았다.
Try — 어떻게 해결했나?
✅ 해결 핵심:
MapComponent에서 포탈을 각 맵별로 직접 관리하도록 변경했다.
수정 내용:
1. MapComponent에 포탈 필드 추가
public PortalTrigger portal;
2. 맵이 시작될 때 포탈 초기화
if (portal != null)
portal.ResetPortal();
3. 웨이브 또는 존 클리어 시 해당 맵의 포탈만 활성화
if (portal != null)
portal.EnablePortal();
4. MapManager의 ActivateMap에서 포탈은 건드리지 않고, MapComponent에 위임함
Result — 결과
- 각 맵의 포탈이 독립적으로 관리되어 이전 맵의 포탈이 활성화되는 문제 해결
- 적을 모두 처치한 뒤에만 F 키 입력이 정상 작동
- 불필요한 FindObjectOfType 호출 제거로 성능도 향상
Lesson Learned — 얻은 교훈
- 맵 단위로 오브젝트를 개별 관리하는 구조가 유지 보수와 버그 방지 측면에서 더 안정적이다.
2. 플레이어 처음 두번 스폰되는 문제
if (_playerInstance != null && map.playerSpawnPoint != null && _currentIndex != 0)
_playerInstance.transform.position = map.playerSpawnPoint.position;
_currentIndex != 0 조건을 추가하여 map이 첫번째일때는 위치를 변경하지 않도록 하였다.
728x90
'GameDevelop > Unity팀프로젝트' 카테고리의 다른 글
중간발표 후 피드백 기록 (2) | 2025.07.15 |
---|---|
Unity 타일맵 구조 정리 & 작업 일지 (Middle4 타일맵 구성) (0) | 2025.07.11 |
FadeIn FadeOut (0) | 2025.07.08 |
[Unity 트러블슈팅] Wave/ZoneSpawner에서 Update 중복 호출로 인한 맵 클리어 문제 해결 (0) | 2025.07.07 |
유니티 로그라이크 맵 관리 시스템 제작 (0) | 2025.07.04 |