유니티 버전 - 2022.3.48f1
목차
- Debug 클래스
- 자주 사용되는 Debug
- 마치며
Debug 클래스
Debug 클래스는 Unity에서 디버깅을 위한 다양한 기능을 제공하는 정적 클래스입니다
게임 개발 중 발생하는 문제를 추적하고, 게임의 상태를 확인하며, 코드 실행 중의 정보 출력을 용이하게 해줍니다
개발을 할때 Debug 클래스를 이용하여 다양한 로그 메시지를 출력할 수 있으며, 이를 통해 게임의 로직을 분석하고 버그를
수정하는 데 도움을 받을 수 있습니다
아래에는 Debug. Log / LogWarning / LogError / Assert / DrawRay에 대하여 다루고 있습니다
자주 사용되는 Debug
Debug.Log
게임 실행 중 일반 정보를 출력할 때 사용합니다, 게임의 상태나 변수 값 등을 콘솔에 표시해 디버깅에 도움을 줍니다
Debug.Log("플레이어가 이동했습니다."); // object message
void OnCollisionEnter2D(Collision2D collision) // object message, object context
{
Debug.Log("충돌 발생", collision.gameObject);
// 충돌한 오브젝트의 정보를 로그에 출력하고, context로 해당 오브젝트를 연결
}
콘솔에서 충돌로 인해 디버그가 발생하였을때 더블클릭하면 Hierarchy에서 충돌한 오브젝트를 가리킵니다
Debug.LogWarning
경고 메시지를 출력할 때 사용합니다, 주의가 필요한 상황이나 잠재적인 문제를 콘솔에 노란색으로 표시합니다
게임에 심각한 오류를 겪지는 않지만, 개발시 눈여겨봐야 할 사항을 경고할 때 유용합니다, 예를 들어서 특정 값이 예상 범위를 벗어났을 때 사용합니다
public class PlayerSpeedCheck : MonoBehaviour
{
public float speedThreshold = 10f; // 경고 기준 값
public Rigidbody2D playerRigidbody;
void Update() // 속도 체크
{
float currentSpeed = playerRigidbody.velocity.magnitude;
if (currentSpeed > speedThreshold)
{
Debug.LogWarning("플레이어의 속도가 기준 값 보다 높습니다, 속도: " + currentSpeed, gameObject);
// object message, object context
// 속도가 기준 값 이상일 때 경고 메시지 출력
}
}
}
경고 메시지가 나오고 클릭하면 어떤 오브젝트인지 가리킵니다
Debug.LogError
오류 메시지를 출력할 때 사용하는 메서드입니다, 문제가 발생했을음 나타내고 코드에서 예외 상황이나 오류를 처리할 때 사용합니다, 콘솔의 Error Pause와 함께 사용하여 오류가 발생하였을때 게임을 일시정지 할수도 있습니다
public class test : MonoBehaviour
{
public GameObject player;
void Start()
{
if (player == null)
{
Debug.LogError("오류: 플레이어 오브젝트가 할당되지 않았습니다", gameObject);
// object message, object context
// 플레이어 오브젝트가 할당되지 않은 경우 오류 메시지 출력
}
}
}
오류 메시지가 나오고 클릭하면 어떤 오브젝트인지 가리킵니다
아래를 살펴보면 게임이 일시정지되고 Hierarchy에서 강조되며 확인해보니 Player가 할당되어있지 않음을 확인할 수 있었습니다
Debug.Assert
public class test : MonoBehaviour
{
public int[] scores // 인스펙터에서 3으로 설정한다고 가정
void Start()
{
Debug.Assert(scores.Length == 5, "scores 배열의 길이는 5여야 합니다", gameObject);
// object message, object context
}
}
오류 메시지가 나오고 클릭하면 어떤 오브젝트인지 가리킵니다
아래를 살펴보면 게임이 일시정지되고 Hierarchy에서 강조되며 확인해보니 인스펙터에서 길이가 3인 것을 확인할 수 있었습니다
Debug.DrawRay
씬 뷰에서 레이캐스트를 시각화하고자 할 때 사용됩니다, 게임이 실행되는 동안에만 작동하며, 씬 뷰에서만 확인 가능합니다
public class test : MonoBehaviour
{
public Vector3 originRay;
public Vector3 direction;
public float distance;
public float duration;
public Color color;
public bool depthTest = true;
private void Start()
{
color = Color.red;
}
void Update()
{
Debug.DrawRay(originRay, direction.normalized * distance, color, duration, depthTest);
}
}
originRay : 레이의 출발 지점입니다
direction : 레이가 뻗어 나가는 방향을 나타내는 벡터입니다
distance : 레이의 길이를 나타냅니다
duration : 씬 뷰에 표시되는 지속 시간입니다 (초 단위, 0.1f = 0.1초)
color : 레이의 색상입니다
depthTest : 레이가 다른 오브젝트에 가려지는지 여부를 결정합니다 (기본값은 true)
위를 설정하고 난뒤의모습입니다
저렇게도 쓸 수 있지만 보통 간단하게 사용하기 때문에 모든 변수를 하나씩 지정하기보다는 필수적인 것만 설정합니다,
최소한 originRay, direction * distance, color가 필요합니다
public class test : MonoBehaviour
{
void Update()
{
Debug.DrawRay(transform.position, transform.forward * 5f, Color.red);
}
}
마치며
아래는 유니티 공식 문서입니다, Debug에 대하여 설명하고있습니다
이상입니다
'코드 및 공부 > 기타' 카테고리의 다른 글
if문을 어떻게 쓰는지에 대한 생각 (0) | 2024.12.17 |
---|---|
게임 에셋 판매 사이트 (0) | 2024.12.12 |
콘솔 창(Console) (4) | 2024.11.04 |
이벤트 함수의 실행 순서 (0) | 2024.10.21 |
Unity - Scripting API를 참고하는 법 (1) | 2024.10.14 |