2025/05/07(수)

개발자 지망생 유령·2025년 5월 7일

내일배움캠프

목록 보기
9/17
post-thumbnail

문제 1: 점수가 즉시 반영되지 않고, 다음 게임오버에 출력됨

문제점
게임 중 점수가 정상적으로 올라가는 것처럼 보였지만, UI에 즉시 반영되지 않고 다음 게임오버 시점에 이전 점수가 출력되는 현상이 발생했다.

시도해본 것
점수 오브젝트를 Instance로 접근하여 갱신을 시도

점수를 즉시 갱신하기 위해 스크립트에서 UI 업데이트를 반복 호출했지만 효과가 없었음

해결 방법
점수 UI가 포함된 게임 오브젝트 내부에 직접 점수를 관리하도록 구조를 바꿨고, UI가 활성화된 시점에서 점수를 넣어주도록 수정하여 해결

알게 된 것
게임 데이터와 UI는 연동 타이밍이 중요하며, UI에 반영되는 시점과 데이터를 갱신하는 시점을 명확히 나누는 것이 중요하다
시스템 흐름이 명확하지 않을 때는, "누가 사용할 데이터인가?"와 "언제 사용할 것인가?"를 분리해서 설계해야 한다


문제 2: 불필요한 트리거 충돌로 인해 버그 발생

문제점
플레이어가 장애물을 통과할 때 점수가 두 번 올라가거나, 이상한 상황에서 트리거가 작동하는 현상이 발생했다.

시도해본 것
충돌 대상 오브젝트에 다른 콜라이더가 존재하는지 확인
트리거 이벤트가 중복으로 발생하는 이유를 디버깅

해결 방법
BgLooper 오브젝트에 isTrigger가 켜져 있어, 불필요하게 트리거 이벤트에 반응하고 있었던 것을 비활성화하여 해결
트리거 이벤트가 반복되는 경우에는, bool 상태를 통한 제한 로직을 반드시 추가해줘야 안정적인 작동을 보장할 수 있다

알게 된 것
트리거는 의도하지 않은 오브젝트 간에도 작동할 수 있으므로, Collider 및 isTrigger 설정은 철저하게 점검해야 한다
충돌 관련 버그는 단순히 코드 문제가 아니라 오브젝트 설정 자체에서 비롯되는 경우가 많다


문제 3: 멀티 씬 구조에서 카메라 설정이 올바르게 작동하지 않음

문제점
메인 씬에서 미니게임 씬으로 전환할 때, 카메라가 플레이어를 제대로 따라가지 않거나, 씬 전환 후 카메라가 비활성화되는 문제가 발생했다.

시도해본 것
isMain이라는 static 변수를 활용하여 씬 상태를 관리
SceneManager.LoadScene()과 UnloadSceneAsync()를 사용하여 씬 활성/비활성을 전환
FollowCamera 스크립트를 통해 현재 씬 상태에 따라 카메라 대상 변경을 시도

해결 방법
카메라 설정과 씬 상태 관리가 너무 복잡하게 얽혀 있어, 최종적으로는 SceneManager.LoadScene()으로 단일 씬 로딩 방식으로 변경하여 안정성 확보

알게 된 것
멀티 씬을 사용할 때는 카메라, 씬 루트 오브젝트, 데이터 공유 방식이 명확하게 분리되어야 한다
씬 간 전환을 구현할 때는 단순히 씬을 "켜고 끄는 것" 이상으로 각 씬의 초기화 상태와 흐름을 통제할 수 있어야 한다

전체적으로 알게된것

구조 설계 -단순히 작동하는 것이 아니라, 의도된 흐름대로 작동하도록 설계하는 것이 핵심
디버깅 - 코드보다는 오브젝트 설정(Colliders, Layers, Triggers 등)에서 문제가 생길 수 있음
UI 연동 - 데이터와 UI는 비동기적일 수 있음 → 정확한 업데이트 타이밍 필요
멀티 씬 - 장점도 있지만 관리 포인트가 많으므로, 철저한 상태 관리와 책임 분리 필요

0개의 댓글