GameDevelop/Unity팀프로젝트

FadeIn FadeOut

도도돋치 2025. 7. 8. 14:26
Contents 접기
728x90

목표 시나리오

  1. 게임 시작 시:
    • 검은 화면 → FadeIn → 첫 맵 등장
  2. 맵 이동 시:
    • FadeOut → 기존 맵 Deactivate
    • 맵 교체 → FadeIn
  3. 모든 맵 클리어 시:
    • FadeOut → 엔딩 처리 (씬 전환 or UI)

 

구조 확인

MapManager.cs 주요 흐름 정리

// 플레이어 생성 및 첫 맵 전환
private void Start() 
{ 
    // playerInstance = 생성 또는 찾기
    // StartCoroutine(TransitionToNextMap());
}
// 외부에서 다음 맵 호출
public void GoToNextMap()
{
    StartCoroutine(TransitionToNextMap());
} 
// 맵 전환의 핵심 루틴
private IEnumerator TransitionToNextMap() 
{ 
    // 1. FadeOut
    // 2. 기존 맵 Deactivate
    // 3. currentIndex++
    // 4. 새로운 맵 Activate
    // 5. FadeIn
}
 
 

필요한 구조 확장

1. 초기 진입용 FadeIn 처리

현재는 Start()에서 바로 TransitionToNextMap()을 실행해서, 시작 화면이 깜빡이거나 부자연스럽게 될 수 있음

 

해결 방안:

  • Start()를 IEnumerator로 바꾸고,
  • 검은 화면 유지 → FadeIn → TransitionToNextMap 흐름으로 수정

 

 

TransitionToNextMap 내부 흐름 정리

TransitionToNextMap() 
{ 
    1. FadeOut (화면 어두워짐) 
    2. 이전 맵 Deactivate 
    3. currentIndex++ 
    4. 다음 맵 Activate + 플레이어 위치 이동 + 카메라 설정 
    5. FadeIn (화면 밝아짐) 
}

 

 

모든 맵 끝났을 때 FadeOut 처리

  • 기존에는 그냥 "모든 맵 클리어!" 로그만 있음
  • 여기에 FadeOut과 결과 처리를 넣을 수 있음

 

구조 흐름 다이어그램

[시작]

MapManager.Start() → 
  └─> FadeController.SetBlack() ← 검은 화면 유지
  └─> FadeController.FadeIn() ← 서서히 밝아짐
  └─> TransitionToNextMap()

TransitionToNextMap():
  ├─> FadeOut() ← 현재 화면 어두워짐
  ├─> maps[currentIndex].Deactivate()
  ├─> currentIndex++
  ├─> maps[currentIndex].Activate()
  ├─> 카메라 & 플레이어 위치 이동
  └─> FadeIn() ← 다음 맵 밝아짐

└─> 마지막 맵이면:
     └─> FadeOut()
     └─> 결과 화면 UI or 씬 전환
728x90