1. 고양이가 일정 높이 이하로 내려가면 게임 종료가 되지 않던 문제
GameManager에서 싱글톤 인스턴스가 제대로 초기화 되지 않아 발생.
// 수정 전 (오류)
if (Instance = null) // 대입 연산자(=) 사용 → 항상 null이 할당됨
{
Instance = this;
}
// 수정 후 (올바른 비교)
if (Instance == null) // 비교 연산자(==) 사용
{
Instance = this;
}
Awake() 메서드에서 = 대입연산자와 == 비교연산자를 헷갈린 것이 원인으로 Cat 스크립트에서 GameManager.Instance.Gameover() 호출 시 NullReferenceException이 발생. 수정 후 코드 정상적으로 작동
2. 뚱뚱한 고양이의 체력(full값)이 증가하지 않는 문제.
if(energy == 5)
{
if(!isFull)
{
isFull = true;
hungryCat.SetActive(false);
fullCat.SetActive(true);
Destroy(gameObject, 2.0f);
Gamemanager.Instance.AddScore();
}
}
energy 값이 5로 고정되어있어 full이 10인 fatCat이 절대 조건을 충족시키지 못함.
따라서 full 변수를 사용하여 동적으로 대응.
if(energy >= full)
3. 뚱뚱한 고양이에 먹이가 적용되지 않던 문제.
Collider 설정이 해제되어 먹이와 충돌이 일어나지 않았음. Collider 설정 후 해결
4. 해적 고양이의 full 게이지가 나타나지 않는 문제.
끝까지 원인을 찾지 못해 제거 후 새로 만들어 해결.
유니티 개발 회고: "고양이 게임"을 만들며 배운 것들
1. "하나의 스크립트"로 다양한 객체를 제어하는 효율성
처음에는 각 고양이 타입마다 별도의 스크립트를 작성하려 했지만 type 변수 하나로 분기 처리하는 법을 배우게 되어, 중복을 줄이고 유지보수가 쉬워졌다.
2. 사소한 실수가 큰 버그로 이어질 수 있다
연산자 오타 (= vs ==), Collider 미할당 같은 사소한 실수가 게임 메커니즘 전체를 망가뜨리는걸 경험하니 실수를 줄이는 것과 디버깅의 중요성에 대해 깨닫게 되었다.
3. 문제 해결 능력 성장
"왜 type=2만 적용이 안 되지?" 같은 문제에 부딪혔을 때 로그 분석 → 변수 확인 → 프리팹 검사 단계를 차근차근 거치며,
체계적인 접근법을 터득하게 되었다. 비록 간단한 실수였지만 더듬어 가는 과정에서 가치를 느꼈다.
'사전캠프 TIL' 카테고리의 다른 글
게임 역 기획하기 (0) | 2025.04.01 |
---|---|
[내일배움캠프 사전캠프] + 카드 뒤집기 게임 (0) | 2025.03.31 |
[내일배움캠프 사전캠프] + 6. 배열 요소의 최대값과 최소값 찾기 (0) | 2025.03.27 |
[내일배움캠프 사전캠프] + 5. 이중 반복문을 사용한 구구단 출력 (0) | 2025.03.27 |
[내일배움캠프 사전캠프] + 4. 숫자 맞추기 (0) | 2025.03.27 |