오늘은 전체적으로 부족한 부분이 발견되면 수정하는 등 디테일을 잡는 날이었다.
디테일 첫번째
먼저 SuccessPanel이 노말과 하드 둘이 각각 다른 종류여야 하는데 동일하게 활성화 되는 부분을 수정했다.
// Normal 단계
if (GameManager.Instance.CurLevel == 1)
{
// 성공
if (GameManager.Instance.IsFinished)
{
clearTxt.SetActive(true);
normalSuccessPanel.SetActive(true);
timeTxt.enabled = false;
board.SetActive(false);
pauseBtn.SetActive(false);
tSlider.gameObject.SetActive(false);
AudioManager.Instance.SFXList.Clear();
GameManager.Instance.NomarlClear = true;
}
// 실패
else if (time >= normalMaxTime)
{
timeTxt.text = 30f.ToString("N2");
Time.timeScale = 0f;
failTxt.SetActive(true);
timeTxt.enabled = false;
board.SetActive(false);
tSlider.gameObject.SetActive(false);
pauseBtn.SetActive(false);
AudioManager.Instance.SFXList.Clear();
}
}
else if(GameManager.Instance.CurLevel ==2)
{
// 성공
if (GameManager.Instance.IsFinished)
{
clearTxt.SetActive(true);
hardSuccessPanel.SetActive(true);
timeTxt.enabled = false;
board.SetActive(false);
pauseBtn.SetActive(false);
tSlider.gameObject.SetActive(false);
AudioManager.Instance.SFXList.Clear();
GameManager.Instance.HardClear = true;
}
// 실패
else if (time >= hardMaxTime)
{
timeTxt.text = 30f.ToString("N2");
Time.timeScale = 0f;
failTxt.SetActive(true);
timeTxt.enabled = false;
board.SetActive(false);
tSlider.gameObject.SetActive(false);
pauseBtn.SetActive(false);
AudioManager.Instance.SFXList.Clear();
}
}
어제 코드에서는 if문에 조건에서 CurLevel 1과 2를 ||로 해서 묶어버려서 normalSuccessPanel만 포함하는 상태였어서 else if를 이용해 노말과 하드를 각각 나누어 따로 포함하도록 관리했다.
디테일 두번째
히든을 관리하는 부분에서 히든 스테이지를 타임아웃 직전에 클리어 하면 Success연출이 나왔다가 해당 연출이 진행되는 동안 시간이 다 되면 Fail 연출이 동시에 나와버리는 현상이 있었다.
// Hidden 단계
else if (GameManager.Instance.CurLevel == 3)
{
// 성공
if (GameManager.Instance.IsFinished)
{
clearTxt.SetActive(true);
timeTxt.enabled = false;
board.SetActive(false);
pauseBtn.SetActive(false);
tSlider.gameObject.SetActive(false);
AudioManager.Instance.SFXList.Clear();
hero.PlaySuccessAnim();
Invoke("EndingSceneInvoke", 5.0f);
}
// 실패
else if (time >= normalMaxTime)
{
failTxt.SetActive(true);
timeTxt.enabled = false;
board.SetActive(false);
pauseBtn.SetActive(false);
tSlider.gameObject.SetActive(false);
AudioManager.Instance.SFXList.Clear();
hero.PlayDeathAnim();
}
}
파악한 원인은 성공과 실패의 if문 위치가 위 아래로 바뀌어 있어서였다. 위치만 바꿔주었더니 해결.
오늘의 회고
게임을 만드는 과정에서 기능 개발이 중요한 부분인 것은 확실하지만 사소한 이질감 등을 찾는 과정도 매우 중요하다. 솔직히 기능 개발보다 이러한 과정이 더 힘들게 느껴지는데 숙련자가 된다면 조금은 편해질지 궁금하다.
그리고 소감을 작성하는 시간이 있었는데 이번에 간단한 프로젝트를 하면서 뼈저리게 느낀 점은 Gpt 같은 생성형 AI가 개발에 정말 많은 도움이 되는 것은 맞지만 언어를 잘 알지 못하는 단계의 배우는 사람에게는 독이라는 것이다.
과거에 졸업작품으로 게임을 만들면서 거의 대부분 Gpt에 의존했다보니 간단한 기능조차 직접 만들기 힘들었고 Unity 에디터만 어느 정도 익숙해졌을뿐 코딩에 대한 지식은 거의 없는 수준이었다. C# 공부를 더 많이 하도록 노력해야겠다.
'게임 개발 공부 기록' 카테고리의 다른 글
6일차 - C# 1 (기본 구조~반복문) (0) | 2025.01.27 |
---|---|
5일차 - 멤버 카드 뒤집기 마무리 (0) | 2025.01.24 |
3일차 - 멤버 카드 뒤집기 2 (0) | 2025.01.22 |
2일차 - 멤버 카드 뒤집기 (0) | 2025.01.21 |
1일차 - Git과 Github (0) | 2025.01.20 |