유니티에서 가장 자주 쓰이는 함수가 뭘까?
개인적으로는 Debug.Log가 아닐까 생각한다.
코드가 잘 돌아가는지, 값이 올바른지 등을 확인하기 위해 보통 Debug.Log로 메세지를 출력한다.
Debug 종류는 Log, LogWarning, LogError 3가지로 각 상황에 따라 적절하게 사용한다.

그런데 이 Debug.Log에 내가 원하는 방식으로 수정할 수 있으면 좋지 않을까?
예를 들어, Debug.Log를 호출한 클래스의 이름을 자동으로 메세지에 넣어 출력하게 해준다거나 Editor에서만 Debug.Log를 호출하도록 바꾸는 등 말이다.
1. 호출한 클래스 출력하기
어떤 함수를 호출했을 때 해당 클래스의 이름을 출력하는 방법에는 여러가지가 있다.
가장 간단한 방법은 호출하는 함수에서 this.GetType().name으로 가져오면 된다.

2. Editor / Development build에서만 호출하기
에디터 / 개발용 빌드에서만 호출하고 싶을 땐 조건부 컴파일을 사용하면 쉽게 만들 수 있다.
https://docs.unity3d.com/kr/2021.3/Manual/PlatformDependentCompilation.html
에디터 전용은 #if UNITY_EDITOR, 개발용 빌드 전용은 #if DEVELOPMENT_BUILD로 작성하면 된다.
*개발용 빌드는 Build Setting에서 설정 가능하다 https://docs.unity3d.com/kr/2020.1/Manual/BuildSettings.html

3. 전용 클래스 만들기
하지만 수십, 수백개의 Debug.Log에 매번 저렇게 작성하기는 귀찮다.
Debug.Log를 커스터마이징 해서 위 작업을 자동으로 해주는 클래스를 새로 만들어보자.
static 클래스를 작성하여 UnityEngine.Debug.Log를 위의 1, 2 내용으로 래핑시켜주면 된다.

하지만 이럴 경우 실제로 호출한 클래스 이름을 출력하기 어렵다.
이때 DebugLogger를 Generic 클래스로 만들면 어떤 클래스에서 사용하는지 알 수 있게 된다.

이후 사용하려는 클래스에서 코드 맨 위에 using Debug = DebugLogger<원하는 클래스>; 를 적어주면 된다.
평상시 처럼 Debug.Log를 써도 우리가 만든 디버깅 함수가 호출되는 모습을 볼 수 있다.

4. bool enabling 관리하기
어떤 곳은 Log를 출력해야 하고, 다른 곳은 출력하고 싶지 않을 때도 있다.
우리가 만든 클래스는 generic static 클래스 이므로, 해당 함수 안에 static 변수를 만들어도 클래스마다 존재해서 겹칠일이 없다.
아래처럼 각 Log에 대한 변수를 만들어 호출 여부를 결정해주면 된다.

그리고 사용하는 클래스에서 Debug.EnableLog = false;와 같이 지정해주면 된다.

항상 기본형으로만 써왔던 Debug.Log를 다양한 조건과 내용을 넣어서 커스터마이징 해보았다.
매번 작성하기 귀찮았던 Debug 함수인데, 이렇게 커스터마이징 해서 사용하니 훨씬 편해진 것 같다.
기회가 된다면 Debug.Log 외에 다른 유니티 내부 함수들을 커스터마이징 해봐도 좋을 것 같다.
'게임개발 > Unity' 카테고리의 다른 글
| [Unity] 안쓰는 함수 멋지게 표현하기 (System.Obsolete) (0) | 2025.06.12 |
|---|---|
| [Unity] NetworkVariable, INetworkSerializable Synchronization Problem (0) | 2025.06.05 |
| [Unity] StopCoroutine, 코루틴 중지시키기 (3) | 2025.06.03 |
| [Unity] Button OnClick Event is triggered twice (0) | 2024.08.26 |
| [Unity] 마우스 커서 숨기기, 마우스 화면 고정(cursor visible, cursor lock) (1) | 2023.12.17 |
