🗓️ 오늘 하루 일정
✅ 오전
- 09:00 ~ 10:30 : UIBase에 DOTween 프리셋(오픈/클로즈+유틸) 설계 정리
- 10:30 ~ 12:00 : 로딩 화면 구조 재설계(전용 카메라/레이어 분리 초안)
🍽️ 점심시간
- 13:00 ~ 14:00 : 점심시간
✅ 오후
- 14:00 ~ 16:30 : LoadingCanvas 구현 보강(활성 보장, 최소 2초 노출) · UIRoot.HideAllSceneUIs() 추가
- 16:30 ~ 18:00 : 로딩 전용 카메라 세팅(SS-Camera, CullingMask) 및 씬 전환 흐름 점검
🍽️ 저녁시간
- 18:00 ~ 19:00 : 저녁시간
✅ 저녁
- 19:00 ~ 20:30 : Dimmer 색감/알파 수정, 팝업들에 DOTween 적용
- 20:30 ~ 21:00 : QA 피드백 반영/커밋
- [Fix] Loading 2초로 수정
- [Fix] UI Dimmer 색 수정
- [Fix] UIBase 두트윈 추가
✅ 오늘 학습 키워드
- DOTween 프리셋(Scale/Fade/Slide/Drop, Pulse/Shake/Punch)
- CanvasGroup · Dimmer(블록/페이드 분리)
- LoadingCanvas(독립 카메라/레이어, 최소 노출, 비동기 로드)
- UIRoot.HideAllSceneUIs() · 씬 전환 시 UI 상태 관리
- SceneManager.sceneLoaded 훅 · DontDestroyOnLoad 싱글톤 초기화
- 카메라 Culling Mask / Screen Space - Camera
✅ 오늘 학습 한 내용을 나만의 언어로 정리하기
- UI 연출을 공통화하면 개별 UI 스크립트가 단순해진다. UIBase에서 프리셋만 바꿔도 일관된 퀄리티를 유지할 수 있다.
- 로딩 화면은 씬 카메라와 분리해야 안정적이다. 전용 카메라 + 전용 레이어로 그리면 어떤 씬/카메라 구도에서도 동일한 연출을 보장한다.
- 씬 이동 중에는 현재 씬 UI를 일괄 숨김 → 로딩만 노출 → 새 씬 SceneInitializer가 ShowOnly(activeUI)로 정리.
- Dimmer는 입력 차단(blocksRaycasts) 과 시각(Fade) 을 분리해 제어하면 버그가 줄어든다.
🧩 학습하며 겪었던 문제점 & 에러
1) Coroutine couldn't be started ... 'LoadingCanvas' is inactive!
- 문제 정의: 비활성 오브젝트에서 코루틴 시작 시 예외 발생.
- 시도: OpenUI() 호출 순서 조정, SetActive(true) 보장.
- 해결 코드:포인트: 로딩 GO는 비활성로 숨기지 말고 CanvasGroup.alpha=0로 숨기는 편이 안전.
- public static Coroutine LoadScene(string name) { if (!Instance.gameObject.activeSelf) Instance.gameObject.SetActive(true); if (!Instance.enabled) Instance.enabled = true; return Instance.StartCoroutine(Instance.CoLoad(name)); }
- 새롭게 알게 된 점: StartCoroutine은 활성 컴포넌트에서만 동작.
- 다시 만나면: 공용 오버레이는 항상 활성 유지 + 알파로 제어.
2) 로딩 화면 구도가 씬마다 달라서 오브젝트가 화면 밖으로 벗어남
- 문제 정의: 로딩 중 월드 오브젝트(플레이어 스프라이트/타일)가 메인 카메라 구도에 의존.
- 해결: 로딩 전용 카메라로 분리, 해당 오브젝트는 LoadingWorld 레이어로 렌더.
- // Awake in LoadingCanvas overlayCanvas.renderMode = RenderMode.ScreenSpaceCamera; overlayCanvas.worldCamera = loadingCamera; loadingCamera.cullingMask = LayerMask.GetMask("LoadingWorld"); loadingCamera.depth = 1000; // 항상 최상단
- 새롭게 알게 된 점: 오버레이는 카메라 독립성이 핵심.
- 다시 만나면: 전용 카메라 + 전용 레이어 설계부터 시작.
3) 로딩 중 플레이어 공격 SFX가 들림
- 문제 정의: 씬 교체 중 입력/애니메이션 잔재로 SFX 출력.
- 해결(믹서 파라미터 뮤트):
- UIRoot.HideAllSceneUIs()로 UI 정리, 필요 시 PlayerInput.enabled = false 병행.
- // OnOpen / OnClose in LoadingCanvas mixer.GetFloat("SFXVol", out prev); mixer.SetFloat("SFXVol", -80f); // 로딩 시작 시 // ... mixer.SetFloat("SFXVol", prev); // 로딩 종료 시
- 새롭게 알게 된 점: 오디오는 스냅샷/파라미터 방식이 가장 안정적.
- 다시 만나면: 로딩 시작 훅에서 입력/사운드 모두 차단.
📝 메모
오늘은 UI 공통화(DOTween) 와 로딩 파이프라인 안정화 두 축을 확실히 잡았다.
디테일(딤머 색·알파, 최소 노출 2초)까지 손보고 나니 화면 전환이 훨씬 매끈해졌다.
내일은 로딩 중 SFX 완전 차단과 스태미나 초기화, 커서 정책을 마무리하고 스테이지2 잔업을 닫자.
내일도 화이팅!!!

'스파르타 코딩클럽 > TIL작성' 카테고리의 다른 글
| 내일배움캠프 68일차 TIL [최종 프로젝트 Black Chamber] (0) | 2025.10.02 |
|---|---|
| 내일배움캠프 67일차 TIL [최종 프로젝트 Black Chamber] (0) | 2025.10.01 |
| 내일배움캠프 65일차 TIL [최종 프로젝트 Black Chamber] (0) | 2025.09.29 |
| 내일배움캠프 64일차 TIL [최종 프로젝트 Black Chamber] (0) | 2025.09.26 |
| 내일배움캠프 63일차 TIL [최종 프로젝트 Black Chamber] (0) | 2025.09.25 |
