오늘의 TIL (Today I Learned)
Unity 프로젝트 디버깅 및 상태 추적
오늘은 Unity 프로젝트에서 PlayerStat 클래스의 health 값을 추적하는 방법에 대해 고민하고, 이를 효과적으로 디버깅하고 추적하는 방안을 구현했습니다.
문제 상황
- health 값 초기화 및 변경 이슈
health 값이 게임의 첫 프레임에서 잘못된 값으로 초기화되거나, 의도하지 않은 방식으로 변경되는 현상이 있었습니다. 이를 디버깅하기 위해 값의 변경 이력을 추적하고, 변경된 시점과 값을 확인할 수 있는 방법이 필요했습니다. - 기존 Debug.Log의 한계
값이 변경될 때마다 로그를 출력하는 방식은 단순히 현재 상태를 확인할 수 있지만, 변경 이력을 누적해서 확인하거나, 어떤 로직에서 값이 변경되었는지 명확히 추적하기 어렵다는 단점이 있었습니다.
해결 방법
1. health 값 추적 시스템 구축
health 값을 변경할 때마다, 이전 값과 새 값을 함께 기록하고, 변경된 시간(Time.time)도 저장하도록 구현했습니다. 이를 위해 health 프로퍼티를 활용해, 값을 설정할 때마다 다음과 같은 작업을 수행하도록 했습니다:
- 값이 변경된 시점과 변경 내용을 기록.
- 로그 출력으로 디버깅 가능.
- 변경 이력을 리스트에 저장해 필요 시 전체 이력을 출력.
2. 변경 이력 확인용 메서드 추가
추적된 health 값의 변경 이력을 확인할 수 있는 PrintHealthChangeHistory() 메서드를 구현했습니다. 이를 통해, 현재까지의 모든 변경 이력을 한 번에 출력할 수 있도록 구성했습니다.
배운 점
- 상태 추적의 중요성
디버깅 과정에서 단순히 현재 값을 확인하는 것만으로는 문제의 원인을 파악하기 어렵다는 것을 다시 한 번 깨달았습니다. 특히, 게임처럼 실시간으로 상태가 변하는 시스템에서는 값의 변경 이력을 추적하는 시스템이 필수적이라는 점을 알게 되었습니다. - 디버깅 도구를 활용한 효율적인 문제 해결
Unity의 Debug.Log와 커스텀 로깅 시스템을 활용해, 값 변경 이력을 저장하고, 문제가 발생한 시점과 원인을 더 명확히 파악할 수 있었습니다. - 코드 설계의 중요성
데이터의 상태를 안전하게 관리하고 추적하기 위해, private 필드와 public 프로퍼티를 적절히 활용해야 한다는 점을 다시 확인했습니다. 또한, 이러한 설계를 통해 디버깅과 유지보수가 쉬운 구조를 만들 수 있었습니다.
결과
이번 작업을 통해, health 값이 변경되는 모든 시점을 명확히 파악할 수 있게 되었고, 어떤 로직에서 값이 잘못 변경되었는지 추적할 수 있었습니다. 또한, 디버깅 시스템이 프로젝트 전반에 유용하게 활용될 수 있다는 것을 확인했습니다.
'TIL(Today I Learned) > 오늘 무엇을 배웠을까' 카테고리의 다른 글
TIL(Today I Learned) - 83 (0) | 2025.01.20 |
---|---|
TIL(Today I Learned) - 81 (0) | 2025.01.15 |
TIL(Today I Learned) - 80 (0) | 2025.01.14 |
TIL(Today I Learned) - 79 (0) | 2025.01.13 |
TIL(Today I Learned) - 78 (0) | 2025.01.10 |