사전캠프 TIL

[내일배움캠프 사전캠프] + 고양이 밥주기 게임

mrmuffin 2025. 3. 28. 18:06

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만 적용이 안 되지?" 같은 문제에 부딪혔을 때 로그 분석  변수 확인  프리팹 검사 단계를 차근차근 거치며,
체계적인 접근법을 터득하게 되었다. 비록 간단한 실수였지만 더듬어 가는 과정에서 가치를 느꼈다.