유니티 버전 - 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에 대하여 설명하고있습니다
https://docs.unity3d.com/2022.3/Documentation/ScriptReference/Debug.html
Unity - Scripting API: Debug
Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. Close
docs.unity3d.com
이상입니다
'코드 및 공부 > 기타' 카테고리의 다른 글
게임 에셋 판매 사이트 (1) | 2024.12.12 |
---|---|
유니티에서 픽셀 폰트를 TMP 폰트 에셋으로 만들기 (3) | 2024.12.05 |
콘솔 창(Console) (4) | 2024.11.04 |
이벤트 함수의 실행 순서 (0) | 2024.10.21 |
TagManager.preset을 이용한 태그 및 레이어 관리 (0) | 2024.10.11 |