[TIL] Unity - day 18

뭉크의 개발·2023년 8월 11일
0

Unity - Camp

목록 보기
5/70
post-thumbnail

🐧 들어가기 앞서

오늘은 미니 프로젝트의 발표날이다!

발표하기 전 긴장이 풀렸는데

막상 발표 시작하니까 얼굴이 붉어졌다.

긴장을 안하는 날이 올까?

반응도 좋았고 발표도 나름 잘 됐다.

만족!


🐧 오늘 배운 것

발표를 하면 질문이 들어올 수 있게 때문에

여러가지를 알아왔다.

  1. 프로젝트 로직 공부

  2. 스테이지를 전역 변수로 사용한 이유


🐧 기억할 것 & 진행

1. 프로젝트 로직 공부

내가 진행하는 프로젝트의 로직에 대해 질문이 들어올 수 있기 때문에 로직을 자세하게 설명하기 위해 간단하게 정리했다.

  • GameManager.cs

게임 시작(Awake)
게임 매니저 인스턴스 생성 및 설정
초기 스테이지 로드(Load Stage)

게임 진행(Update)
시간이 정상적으로 경과하도록 Time.timeScale 1
스테이지가 준비되었는지 확인 (isStageReady)
시간 업데이트
만약 시간이 0보다 작거나 같아지면, 게임 오버 상태로 전환
게임 오버 UI 표시 (실패 스테이지 소리 재생)
만약 남은 시간이 얼마 남지 않으면 -> 애니메이션 활성화

카드 선택 및 매칭 (AddOpenCard)
선택한 카드가 이전에 선택한 카드와 같은지 확인하는 작업
같으면 실행X
첫 번째 선택한 카드인 경우 -> 1 저장
두 번째 선택한 카드인 경우 -> 2 저장
1, 2 비교
맞으면 -> 매칭 처리 및 매칭 텍스트 + 효과음 재생
모돈 카드를 맞추면 게임 클리어 처리 + 효과음 재생
틀리면 -> 카드를 다시 뒤집고 시간 감소 및 실패 텍스트 표시 + 효과음 재생
시도 횟수 증가

다음 스테이지 (NextStage)
현재 스테이지 인덱스 증가 및 최대 스테이지 범위 내에서 조절
다음 스테이지 로드

게임 클리어 처리 (GameClear)
클리어 효과음 재생, 게임 클리어 UI 표시
최고 기록 생신, 최고 기록 저장, 게임 오버 처리(Update)
게임 오버상태면 -> 게임 오버 UI 표시, 게임 오버 상태인지 확인 변수

카드 준비(ReadyCard)
카드가 모두 준비되었을 때 -> 모든 카드를 동시에 뒤집는 애니메이션 실행

스테이지 로드(LoadStage)
게임 클리어 또는 게임 오버 시 호출
클리어 및 실패 UI 비활성화
스테이지 관련 데이터 초기화
선택된 스테이지에 따라 해당 스테이지 오브젝트 활성화
카드 생성(CreateCate)
시간 및 최고 기록 업데이트

2. 스테이지를 전역 변수로 사용한 이유

스테이지 정보는 게임 로직과 관련된 부분이므로, 유니티와 연동이 필요하지 않았다.
따라서 MonoBehaviour를 제거해 관리했다.

데이터의 일관성
모든 Scene에서 같은 데이터를 사용할 수 있으므로 데이터의 일관성이 유지된다.
스테이지 정보와 같이 여러 Scene에서 공유되어야 하는 데이터를 중앙에서 처리하기 때문에 데이터의 일관성이 보장된다.

코드 간결성
스테이지 정보를 Scriptable Object와 Global Variable을 이용했기 때문에 GameManager.cs에서 관리하는 데이터가 줄어 코드가 간결해졌다.


🐧 게임에 구현한다면?


🐧 내일 할 일

드디어 프로젝트가 끝났다!

시간이 정말 빨리 지나갔다.

9 to 9은 굉장히 힘들다.

다음주가 되기 전에 체력을 충분히 보충해야겠다!

프로젝트를 진행하면서

내가 팀에 도움이 될까?

라는 생각을 정말 많이 했다.

사람마다 장점과 단점이 있다.

내가 잘할 수 있는 일에 최선을 다하고

잘 못하는 일에는 열정을 다해서

언제나 노력하고 잘하는 사람으로 평가받기 위해 더 노력하자!

규승님 고생하셨어요 😊

1개의 댓글

comment-user-thumbnail
2023년 8월 11일

공감하며 읽었습니다. 좋은 글 감사드립니다.

답글 달기