[Unity] Debug.Log 커스터마이징

2025. 7. 12. 14:56·게임개발/Unity

유니티에서 가장 자주 쓰이는 함수가 뭘까?

 

개인적으로는 Debug.Log가 아닐까 생각한다.

코드가 잘 돌아가는지, 값이 올바른지 등을 확인하기 위해 보통 Debug.Log로 메세지를 출력한다.

Debug 종류는 Log, LogWarning, LogError 3가지로 각 상황에 따라 적절하게 사용한다.

 

Debug.Log, LogWarning, LogError

 

 

그런데 이 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 내용으로 래핑시켜주면 된다.

 

static DebugLogger class

 

하지만 이럴 경우 실제로 호출한 클래스 이름을 출력하기 어렵다.

 

이때 DebugLogger를 Generic 클래스로 만들면 어떤 클래스에서 사용하는지 알 수 있게 된다.

 

Generic static class

 

이후 사용하려는 클래스에서 코드 맨 위에 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
'게임개발/Unity' 카테고리의 다른 글
  • [Unity] 안쓰는 함수 멋지게 표현하기 (System.Obsolete)
  • [Unity] NetworkVariable, INetworkSerializable Synchronization Problem
  • [Unity] StopCoroutine, 코루틴 중지시키기
  • [Unity] Button OnClick Event is triggered twice
깜냥c
깜냥c
게임 개발/클라이언트/AI/PS/기타 연구
  • 깜냥c
    Choice Program
    깜냥c
  • 전체
    오늘
    어제
    • 분류 전체보기 (58)
      • 언어 (11)
        • C,C++ (9)
        • C# (1)
        • Python (1)
      • PS (20)
        • 백준 문제 (19)
        • 알고리즘 (1)
      • 인공지능 (2)
      • 게임제작 (7)
      • 게임개발 (15)
        • Unity (8)
        • Unreal Engine (5)
        • Godot Engine (1)
      • 기타 (2)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 블로그 소개
  • 링크

    • 김병장의 IT 블로그
    • 식품영양과 데이터사이언스
  • 공지사항

  • 인기 글

  • 태그

    BOJ
    C언어
    입출력
    백준
    UE5
    배낭 문제
    unity
    Unreal
    C++
    Godot
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
깜냥c
[Unity] Debug.Log 커스터마이징
상단으로

티스토리툴바