시작하며
에디터에서 액터, 캐릭터 등을 설정할 때 입력한 데이터가 유효한지 확인이 필요할 때가 있다. 이럴 때 데이터 유효성 검사 기능을 통하여 확인 할 수 있다.
기능 활성화
데이터 유효성 검사 기능은 기본적으로 활성화 되어있으며 편집(Edit) > 플러그인(Plugins)
를 선택하고 플러그인 메뉴에서 Data Validation 이 활성화 되어있는지 확인한다.
사용자 정의 데이터 유효성 검사
UObject에는 IsDataValid 가상함수가 정의되어있다. 해당 함수를 오버라이드 하여 원하는 데이터 유효성 조건을 처리할 수 있다.
//.h
#if WITH_EDITOR
virtual EDataValidationResult IsDataValid(TArray<FText>& ValidationErrors) override;
#endif
//.cpp
#if WITH_EDITOR
EDataValidationResult AMyDataActor::IsDataValid(TArray<FText>& ValidationErrors)
{
EDataValidationResult Result = Super::IsDataValid(ValidationErrors);
if (Result == EDataValidationResult::Valid)
{
//데이터 유효성 검사
if(!ValidCheck())
{
ValidationErrors.Add(FText::FromString(TEXT("MyDataActor : Data Invalid!!")));
Result = EDataValidationResult::Invalid;
}
}
return Result;
}
#endif
유효성 검사
유효성 검사는 애셋을 우클릭하여 액션에 유효성 검사 버튼을 선택하여 할 수 있다. 또한 해당 애셋을 저장할 때도 유효성 검사를 진행한다.
언리얼 엔진 5에서
언리얼 엔진 5의 월드 파티션은 액터당 파일이라는 개념으로 액터마다 파일로 저장되기 때문에 레벨에 배치된 액터 단위로도 유효성 검사를 할 수 있다.
언리얼 엔진 4의 일반 레벨에서도 가능한지는 확인해보지 못했다.
요약
애셋을 저장할 때 데이터 유효성을 검사할 때는 DataValidation 플러그인을 활성화 하고 UObject를 상속받은 클래스의 경우 IsDataValid 함수를 오버라이드 하여 사용자 정의로 조건을 처리할 수 있다.
참고 페이지
반응형