유니티의 Debug는 UnityEngine에서 제공하는 매우 유용한 클래스로 하루에 몇 번씩 사용하는 함수입니다.
Log와 DrawRay 등 다양한 방법으로 자신이 원하는 위치에 쉽게 Debug를 할 수 있는데요
저는 Debug.Log와 같은 함수들이 APK로 빌드 시 유니티 Build Settings에서 Development Build를 활성화해야만 해당 로그가 출력되는 줄 알았습니다.
하지만 Release로 빌드 시에도 해당 로그들은 출력됐으며, 이 로그들을 개발자가 아닌 앱 사용자라면 누구나 확인할 수 있으며 동시에 불필요한 성능을 잡아먹고 있었습니다.
이 문제를 보다 효율적으로 해결하기 위해 저는 2가지 방법을 채택했습니다.
1. 정규식을 사용해 지워도 되는 로그들과 그렇지 않은 로그들을 분류해서 한 번에 정리한다.
2. 1번에서 살아남은 필요한 로그들을 static 형식의 새로운 Debug Class와 Unity의 Define Symbols를 이용해 개발자가 해당 기능을 활성화 혹은 비활성화한다.
첫 번째 적용사항입니다.
현재 작업 중인 프로젝트에 심어둔 로그가 워낙 많아서 일일이 찾아서 지우기엔 시간이 너무 많이 걸릴 거 같아서 작업자별로 각자 정말 필요한 로그들을 주석처리 해달라 한 뒤 주석처리 한 로그를 제외한 모든 로그를 찾아서 지우는 정규식을 적용했습니다.
사용한 정규식은 다음과 같습니다.
^((?!//).)*debug.*;\r?\n
그 후 주석처리 한 로그들의 주석을 지워주는 정규식을 사용해 로그들을 일차적으로 분류했습니다.
두 번째 적용사항입니다.
public static class Debug 클래스를 만든 뒤 Conditional을 사용해 우리가 사용할 Define Symbols 값을 넣어서 각 함수를 세팅했습니다.
예시
[Conditional("DEBUG_LOG")]
public static void Log(object msg)
{
UnityEngine.Debug.Log (msg);
}
그 후 UnityEditor의 EditorWindow에서 Toggle을 사용해 해당 Define Symbols 값을 활성화, 비활성화할 수 있게 적용했습니다.
'클라이언트 프로그래머의 일기 > N년차 클라이언트 프로그래머의 일기' 카테고리의 다른 글
GPT한테 최적화를 시켜보았다. (1) | 2024.10.18 |
---|---|
유니티 프로퍼티에 로그 심어서 상태 변화 체크하기(Unity Property Log) (0) | 2023.08.23 |
유니티 에러가 함수의 끝을 가리키는 경우 해결 방법. (0) | 2023.01.17 |
유니티 빌드 실패 시 FATAL EXCEPTION: UnityMain 해결 방법 (0) | 2022.12.20 |
CMD로 Tortoise SVN 기능 사용하기(update, commit, log) (0) | 2022.01.06 |