문서
https://docs.unrealengine.com/5.3/ko/asserts-in-unreal-engine/
어서트
언리얼 엔진의 어서트 함수 기능에 대한 레퍼런스입니다.
docs.unrealengine.com
들어가며
요약 : 어서트(assert)는 if문 같이 조건의 참 / 거짓에 따라 참이면 그냥 통과하고, 거짓이면 크래시 로그를 출력하거나, 에디터를 크래시 나게 한다, 출시 빌드에서는 코드를 처리하지 않기에 성능에 영향을 안 끼친다.
assert는 개발 중에 예상치 못했거나, 유효하지 않은 조건을 검사하고 확인하는 데 사용된다.
이러한 기능은 포인터가 null인지, 서로의 값이 같은지, 함수가 반복적으로 실행되지는 않는지 등
예외의 상황을 두어 조건이 맞지 않으면 크래시 로그를 출력하거나, 에디터를 크래시 내는 등으로 알려준다.
assert의 주요 특징은 출시 빌드에서는 이 구문이 사라진다는 점이다.
즉 빌드된 게임에서는 퍼포먼스상 영향을 미치지 않고, 추가 이펙트도 없어서 되도록 자주 사용해도 좋다.
assert의 종류에는 동일한 3가지 계열인 check, verify, ensure을 제공한다.
check
check는 첫 번째 파라미터가 false 값이면 에디터에 크래시를 낸다.
출시 빌드에서는 check 구문이 사라진다.
check의 매크로들은 문서를 참고하자 |문서| (위의 문서와 동일)
// 이 함수는 JumpTarget이 null이면 안 된다.
void AMyActor::CalculateJumpVelocity(AActor* JumpTarget, FVector& JumpVelocity)
{
check(JumpTarget != nullptr);
}
verify
verify는 대부분 check와 똑같이 동작하지만, 출시 빌드에서 사라지지 않는다는 점이 check와 다르다.
물론, 출시 빌드에서는 파라미터가 false여도, 에디터가 크래시 나는 것은 무시된다. 확인용도?
verify((Mesh = GetRenderMesh()) != nullptr);
ensure
ensure은 check와 verify와 비슷하지만, 에디터를 크래시 내지는 않는다.
파라미터가 false인 경우, 출력 로그에 크래시 났다고 알리고, 실행은 계속한다.
명시적으로 계속 로그를 띄우는 ensure를 사용하는 게 아니면, 로그는 최초 1번만 띄운다.
ensure은 모든 빌드 (출시 포함)에서 동작한다. 크래시 로그는 출시 빌드를 제외한 빌드에서만 출력된다.
ensure((Mesh = GetRenderMesh()) != nullptr);
'📘Unreal Engine > 📝Unreal Engine' 카테고리의 다른 글
[Unreal Engine] 폰(Pawn)과 캐릭터(Character) (0) | 2024.07.24 |
---|---|
[Unreal Engine] 머리카락(털) 추가 / UGroomComponent (0) | 2024.05.23 |
[Unreal Engine] 로그 출력 / 뷰포트 출력 (0) | 2024.05.21 |
[Unreal Engine] 에셋 경로 참조하기 (0) | 2024.03.20 |
[Unreal Engine] UPROPERTY, UFUNCTION 지정자 (0) | 2024.03.10 |