TIL

[6/27] 씬 전환 히스토리를 Stack 에 저장하여 뒤로가기 기능 구현

youngjin02 2025. 7. 2. 22:34

🎮 오늘 한 일

  • SceneManagerEx 싱글톤 구현
    • LoadScene(), LoadPreviousScene() 을 통해 씬 이동을 제어
    • 씬 전환 히스토리를 sceneStack 에 저장하여 뒤로가기 기능 구현
    • DontDestroyOnLoad 로 로비씬에서 생성된 매니저를 유지시킴
  • 뒤로가기 버튼 공용화
    • SceneBackButton 스크립트 생성 → SceneManagerEx.Instance.LoadPreviousScene() 호출
    • 이 스크립트를 적용한 SceneBackButton 프리팹을 제작해 씬마다 재사용
    • 덕분에 OnClick() 연결이 쉬워졌고, 직접 코드로 AddListener() 안 써도 됨
  • 씬 이동용 버튼도 공통 처리
    • SceneLoadButton 스크립트 작성 → sceneName 을 인스펙터에서 설정해 LoadScene() 호출
    • 모양이 다른 버튼에는 프리팹이 아닌 개별 UI에 스크립트만 붙여서 사용

🧠 배운 점 / 느낀 점

  • OnClick 연결: AddListener vs Inspector
    • AddListener 는 런타임 제어가 가능하지만, 코드 복잡성과 디버깅이 어려움
    • Inspector 연결 방식이 직관적이며, 현재 팀 내 스타일과도 부합해서 채택
    • 단, 씬 간 이동 시 오브젝트가 사라지면 Inspector 연결이 끊어질 수 있음 → 싱글톤으로 해결
  • 왜 래퍼 스크립트를 따로 만드는가?
    • 씬 내에서 SceneManagerEx 가 직접 존재하지 않아도 동작하도록 하기 위함
    • 연결할 함수가 Instance.Method() 형태이므로, MonoBehaviour 위에서 중계가 필요함