스테이지 제작 완성 버튼 구현

이준영·2025년 11월 20일

ConfirmPopUp

  • 저장을 할지 안할지 선택할 수 있는 팝업창이 필요.

씬 설정

씬 설정
  • 기존에 사용하던 AlertPopUp창에 버튼을 하나 더 추가 하였다.

코드

ConfirmPopUp
  • AlertPopUp처럼 타이틀과 설명을 수정할 수 있는 메서드와 버튼의 기능을 초기화하는 기능을 추가하였다.

CompleteButton

  • 스테이지 제작이 완성되었을 때, 누를 수 있는 버튼.

씬 설정

씬 설정
  • 리셋 버튼 오른쪽에 배치.
  • 생각해보니 리셋 버튼 구현 안해놨네...

코드

CompleteButton
  • 별 기능이 없기 때문에 버튼 컴포넌트만 가져오고 기능은 DevStage에서 추가하였다.
DevStage
  • 타겟 컬러가 설정되고, 최소 횟수 계산 알고리즘이 작동 할 때는 ConfirmPopUp창이 작동하지 않을 때는 AlertPopUp창이 떠서 적절한 알림을 알릴 수 있게 하였다.
  • 또한, ConfirmPopUp의 YesButton에는 세이브 기능을 넣어서 스테이지를 저장할 수 있게 하였다.

Test

완성이 불가능한 경우 1
  • 보드를 제대로 채우지 않으면 완성할 수 없다는 알림이 뜬다.
완성이 불가능한 경우 2
  • 타겟 컬러가 설정되지 않는 경우도 마찬가지다.
완성이 가능한 경우
  • 최소 횟수 계산 알고리즘으로 계산 후, 문장으로 알린다.
No버튼
  • 팝업 창만 꺼진다.
Yes버튼
  • 로비로 씬이 이동된다.
세이브 파일
  • Stages.Json으로 저장됨.

개선 또는 추가한 것

PopUpTexts

씬 설정
  • 문득 코드를 작성 중에 DevStage가 점점 무거워 지고 있어서 덜어주기 위해서 구현하였다.
  • 이런식으로 문자열만 받는 역할을 하는 클래스를 재활용하기 쉽기 때문이다.(MainScene에도 활용 가능)
코드
  • 머 없다

SceneMng

SceneMng
  • 씬 이동을 관리하는 클래스를 구현하였다.
  • string 타입의 값을 코드에 적는 것을 싫어하는 편(오류 찾기가 힘듦.)이라 enum으로 구현하였다.

추가 계획

추가적으로 PopUp 호출 방식도 수정할까 생각중이다. DevStage, ColorPuzzle에서 팝업창 오브젝트가 꺼지는 것을 전부 등록하고 있는데, 비효율적으로 보인다.

또한 팝업창 Yes버튼 같은 경우 씬마다 기능이 다른 경우는 관련 없겠지만, 하나의 씬에서 여러가지 기능을 할 때, 이벤트 등록 해제가 힘들다.

따라서 Prefab으로 만든 김에 생성 삭제 방식으로 구현할 예정이다. 이렇게 하면 이벤트 등록 해제가 쉽고, 오브젝트 풀 알고리즘을 복습할 기회도 만들 수 있다.

profile
게임 개발자가 되기 위해서 공부하는 중입니다.

0개의 댓글