구현할 내용
팝업 열기 및 닫기 구현하기

공부하면서 배운 것
Stack 자료구조를 사용한 이유.
팝업 Open/Close 할 때 자체적으로 그냥 열거나 Destory하면 되는데 굳이 Stack에 넣은 이유는 닫기 버튼 누를 때 뿐만 아니라 Esc 버튼을 누를 때 최근에 연 것 부터 해서 닫게 하기 위해서이다. 또는 구글 플레이스토어에서는 뒤로가기 기능을 토해 앱을 종료하는 팝업이 나오는 앱을 홍보해주는 그런 특성이? 있다고 한다.
구조 간단 요약

구현할 것 단계적으로 나누기
1. 영웅 버튼에 Base_Canvas.GetUI 메서드 연결
영웅 버튼을 클릭하면 Base_Canvas의 GetUI메서드로 String을 전달.


Base_Canvas.cs의 GetUI는 리소스 폴더에서 해당 팝업을 가져와 Instantiate 하고 Utils의 Stack에 해당 팝업을 Push 한다.

Instantiate 하면 아래와 같이 캔버스 자식으로 들어가면서 열린다.


2. 닫기
Instantiate한 Heros 오브젝트 자식에는 닫기 버튼이 포함되어 있는데 클릭 시 상위 부모의 오브젝트에 있는 DisableObj 메서드를 실행한다.

Heroes 클래스가 아니라 UI_Base에 DisableObj가 있따.

닫기 버튼을 누르면 자체적으로 Destory하는데 그 전에 Utils Stack에 쌓여있는 것을 제거한다.

2. Stack 자료 구조 정의 (Utils.cs)

✅요약
- 어디서든 쉽게 접근이 가능하도록 Static 처리
- Popup 오픈 시 Stack에 Push 하도록 함
- 1번에서 열은 팝업은 이 Stack에 Push 되고 닫기 하면 PoP된다.

기타 내용
3. Esc 닫기

팝업을 통한 닫기가 아니라 ESC 키를 입력하거나 모바일 뒤로가기를 누르면
Base_Canvas에서 이를 감지하고 Utils로 접근해서 ClosePopupUI메서드를 실행하여 Pop할것같지만 Peek해서 가져오고 참조로 접근해서 직접 DisableObj를 통해 POP하고 Destory를 진행한다.
'유니티 > 구현내용정리' 카테고리의 다른 글
| 유니티 방치형 프로젝트 - Render Texture 활용 하기 (#2 페이드 인아웃) (0) | 2025.03.26 |
|---|---|
| 유니티 방치형 프로젝트 - Render Texture 활용 하기 (0) | 2025.03.26 |
| 유니티 방치형 프로젝트 - 인벤토리 같이 스크롤 적용되는 영웅 슬롯 UI 구현하기. (1) | 2025.03.25 |
| 유니티 방치형 프로젝트 - 크리티컬 로직, UI, 확률 구현 (0) | 2025.03.24 |
| 유니티 방치형 프로젝트 - 트레일 렌더러 사용하여 근접 캐릭 공격 모션 주기 (0) | 2025.03.24 |
