이미 어느정도 예상은 하고 있었지만 스크립트안에 찍힌 로그가 많을시
모바일 환경안에서는 CPU 사용량이 증가하여 성능에 영향을 준다고 한다
그리고 웬만한 로직보다 이 로그 연산이 더 무겁다고 하는데 사실인지는 모르겠지만
중요한건 그 정도로 로그가 성능에 영향을 준다는것이다미 어느정도 예상은 하고 있었지만 스크립트안에 찍힌 로그가 많을시 모바일 환경안에서는 CPU 사용량이 증가하여 성능에 영향을 준다고 한다
그리고 웬만한 로직보다 이 로그 연산이 비용도 더 들고, GC도 많이 만든다고 한다
사실인지는 모르겠지만 중요한건 그 정도로 로그가 성능에 영향을 많이 준다는것이다
그렇기에 이번엔 로그를 상황에 따라 제거하고 생성하는 방법에 대해서 알아보겠다
using System;
using UnityEngine;
public static class Debug
{
public static bool isDebugBuild
{
get { return UnityEngine.Debug.isDebugBuild; }
}
[System.Diagnostics.Conditional("DEBUG_MODE")]
public static void Log(object message)
{
#if (DEBUG_MODE)
UnityEngine.Debug.Log(message);
#endif
}
[System.Diagnostics.Conditional("DEBUG_MODE")]
public static void Log(object message, UnityEngine.Object context)
{
#if (DEBUG_MODE)
UnityEngine.Debug.Log(message, context);
#endif
}
[System.Diagnostics.Conditional("DEBUG_MODE")]
public static void LogFormat(string format, params object[] args)
{
#if (DEBUG_MODE)
UnityEngine.Debug.LogFormat(format, args);
#endif
}
[System.Diagnostics.Conditional("DEBUG_MODE")]
public static void LogError(object message)
{
#if (DEBUG_MODE)
UnityEngine.Debug.LogError(message);
#endif
}
[System.Diagnostics.Conditional("DEBUG_MODE")]
public static void LogError(object message, UnityEngine.Object context)
{
#if (DEBUG_MODE)
UnityEngine.Debug.LogError(message, context);
#endif
}
[System.Diagnostics.Conditional("DEBUG_MODE")]
public static void LogWarning(object message)
{
#if (DEBUG_MODE)
UnityEngine.Debug.LogWarning(message.ToString());
#endif
}
[System.Diagnostics.Conditional("DEBUG_MODE")]
public static void LogWarning(object message, UnityEngine.Object context)
{
#if (DEBUG_MODE)
UnityEngine.Debug.LogWarning(message.ToString(), context);
#endif
}
[System.Diagnostics.Conditional("DEBUG_MODE")]
public static void DrawLine(Vector3 start, Vector3 end, Color color = default(Color), float duration = 0.0f, bool depthTest = true)
{
#if (DEBUG_MODE)
UnityEngine.Debug.DrawLine(start, end, color, duration, depthTest);
#endif
}
[System.Diagnostics.Conditional("DEBUG_MODE")]
public static void DrawRay(Vector3 start, Vector3 dir, Color color = default(Color), float duration = 0.0f, bool depthTest = true)
{
#if (DEBUG_MODE)
UnityEngine.Debug.DrawRay(start, dir, color, duration, depthTest);
#endif
}
[System.Diagnostics.Conditional("DEBUG_MODE")]
public static void Assert(bool condition)
{
#if (DEBUG_MODE)
if (!condition) throw new Exception();
#endif
}
}
우선 코드이다. 이제 단계별로 쉽게 따라하기만 하면 된다.
1. 유니티 내에서 아무 이름으로 C# 스크립트를 만든뒤 위 코드를 붙여넣는다
2. Edit - Project Setting을 열어준다

3. Player - Other Setting - Scripting Define Symbols 로 이동

4. '+' 아이콘 클릭뒤 "DEBUG_MODE"를 입력 후 Apply로 추가해주면 끝

이렇게 해도 당장 달라지는건 없다. 똑같이 로그는 로그창에 정상적으로 찍혀 나오지만
빌드하기 전 다시 이곳으로 돌아와 DEBUG_MODE를 제거해주는 순간
게임환경에서는 모든 로그가 제거되어 성능을 향상시킬 수 있다.
게임 개발할때 필수적으로 거쳐야하는 순서이니 잊지 않도록 하자
반응형
'유니티 > 유니티 기능' 카테고리의 다른 글
이미지 스프라이트 분리 방법 (2) | 2025.03.24 |
---|---|
Scroll View (0) | 2025.01.11 |
유니티에 동영상 삽입하기 (0) | 2024.05.31 |
스크립트가 부착된 오브젝트 하이라이트하기 (0) | 2024.03.12 |
★오브젝트 이동 간편하게 하는법 (0) | 2024.03.12 |