Unity 게임 개발 입문
팀프로젝트 : Arkanoid24
길어지는 script 정리하는 방법
#region 을 사용하면 선언한 변수들을 깔끔하게 정리할 수 있다.
랭킹 UI 만들기
// RankPanel.cs
...
float rankscore = 0;
rankscore = Managers.Game.Score;
PlayerPrefs.SetFloat("Ranks", rankscore);
float tmpScore = 0f;
for (int i = 0; i < 4; i++)
{
RankScores[i] = PlayerPrefs.GetFloat("Ranks");
while (RankScores[i] < rankscore)
{
tmpScore = RankScores[i];
RankScores[i] = rankscore;
PlayerPrefs.SetFloat("Ranks", rankscore);
rankscore = tmpScore;
}
}
어제 생각한 로직대로 스크립트에 구현했다.
RankScore 배열을 만들어서 현재스코어(Managers.Game.Score) 를 저장하는 방식이다.
현재 게임에는 4가지 모드가 있다.
랭킹 시스템을 모든 모드에 적용하려고 했는데, 1가지 모드(무한모드)에서만 사용하기로 변경했다.
그래서 rankpanel.cs 를 따로 만들지 않고 GameManager.cs의 score 부분에서 기능을 구현하기로 했다.
// GameManager.cs
...
Score += score;
MainUI.SetScoreUI(Score);
// 무한 모드에서 최고 점수 기록
if (Mode != GameMode.Infinity) return;
if (Score >= BestScore)
{
BestScore = Score;
PlayerPrefs.SetFloat(Data.BestScore, BestScore);
MainUI.SetBestScoreUI(BestScore);
}
RankingPopup 은 무한모드에서만 띄우기 때문에 해당 모드의 score만 따로 저장할 수 있다.
오늘의 회고
팀원의 도움으로 랭킹 UI 구현을 마쳤다.
결국 다른 방향으로 깨끗하게 정리된 코드를 사용하게 되었지만,
어제 오늘 열심히 영상 찾아보고, 코드 만들기 위해 노력한 게 조금은 영양분이 된 것 같아 다행이다.
기능 구현을 마치고 온 팀원이 합심해서 QA를 진행했다.
오브젝트가 다양하고, 아이템 획득/사용, 게임 종료 시점 등등 게임 생명주기 내에 여러가지 일이 일어나면서 다양한 버그를 만날 수 있었다.
나는 여러가지 방식으로 게임 구석구석까지 탐색하는 편이라 버그 찾는 게 재미있었다.
버그를 발견하면 어디서 발생한 문제인지 파악하고, 해결법을 찾는 것이 중요하다.
이번 프로젝트를 하면서 팀원들을 보고 버그파악/해결 부분에서 많이 배웠다.
[모코코와 사라진 거신] 프로젝트에 참여할 수 있는 사람이 되기 위해
내일도 힘내자!
'게임 개발 일지 > 내일배움캠프 TIL' 카테고리의 다른 글
안 좋은 코드 시리즈 1탄 (1) | 2023.12.08 |
---|---|
객체지향 프로그래밍에서의 Loose Coupling과 모듈화 (1) | 2023.12.07 |
Array.IndexOf(x,y) / 델리게이트와 이벤트의 차이 (1) | 2023.12.05 |
ogg 파일 사용 / UI - BestScore 만들기 (0) | 2023.12.04 |
ScriptableObject / 메타 파일의 중요성 (2) | 2023.12.01 |
댓글