PopUp창 관리 방식 변경(리펙토링)

이준영·2025년 11월 21일

변경 사유

  1. 팝업창의 버튼 클릭 시, 꺼지는 이벤트 등록이 메번 등록하여 코드 관리가 힘듬.
  2. ObjectPooling 알고리즘 복습.
  3. 여러 팝업 창이 필요할 때, 하나의 팝업 창을 돌려 쓰고 있기 때문에 여러 알림을 띄울 수 없음.

이전 방법

  1. 미리 위치를 잡아둔 팝업 창을 FindAnyObjectByType으로 불러옴.
  2. 씬 마다 원하는 기능을 팝업 창 버튼에 등록.
예시 코드
  • 버튼을 누르면 꺼지는 간단한 기능이지만, 코드로 일일히 추가 하였음.

변경한 방법

  1. ObjectPooling 코드 구현.
  2. PopUp창에는 오브젝트가 비/활성화 될 때, 마다 버튼에 기본 기능을 추가/삭제 함.
  3. ObjectPooling으로 PopUp창 생성.
  4. PopUp창 버튼에 원하는 기능 추가

ObjectPooling 코드 구현

ObjectPool
  • Dictionary와 Queue를 이용한 방식으로 구현.
  • 인덱싱 관리는 PoolIndex 열거형을 구현하여 사용.

PopUp창 수정

AlertPopUp
ConfirmPopUp
  • 오브젝트가 활성화 될 때 마다 이벤트를 등록(오브젝트 해제 이벤트)
  • 오브젝트가 비활성화 될 때 마다 이벤트를 제거.

생성 방법

DevStage

이벤트 등록

DevStage.Complete()
  • 이벤트 등록 방법은 그대로
  • 다만 오브젝트 비활성화를 등록하는 부분을 지울 수 있었다.
지워진 코드

Test

여러 팝업창 생성
  • ObjectPooling이 잘 작동되는 모습을 확인할 수 있다.
profile
게임 개발자가 되기 위해서 공부하는 중입니다.

0개의 댓글