데이터 유효성 검사

개발자는 커스텀 스크립트 룰세트로 이 시스템을 확장하여 에셋의 유효성을 검사할 수 있습니다.

Choose your operating system:

Windows

macOS

Linux

언리얼 엔진(UE) 에디터 에서 개발자는 에디터의 Data Validation 플러그인으로 커스텀 스크립트 룰세트를 통해 에셋의 유효성을 검사할 수 있습니다. 다음은 유효성 검사의 흔한 사용 사례입니다.

  • 에셋이 명명 규칙을 충족하는지 확인

  • 공간 및 퍼포먼스 예산 집행

  • 비순환 종속성 발견

플러그인 유효성 검사

내장된 Data Validation 플러그인이 디폴트로 활성화되었는지 확인하려면 메인 메뉴에서 편집(Edit) > 플러그인(Plugins) 을 선택하고 플러그인 메뉴에서 Data Validation 을 검색합니다.

The window shows that Data Validation has been enabled in the Unreal Editor Plugins settings.

에디터 사용

개발자는 단일 에셋의 테스트부터 프로젝트 전체 에셋의 검증까지 다양한 방법으로 데이터 유효성 검사를 활용할 수 있습니다.

유효성 검사 사용 사례

용도

비고

에셋

콘텐츠 브라우저 에서 에셋을 우클릭한 뒤, 에셋 액션(Asset Actions) > 에셋 유효성 검사(Validate Assets) 선택

지정한 에셋의 유효성을 검사합니다. 여러 에셋을 선택할 수도 있습니다.

에셋 및 종속성

콘텐츠 브라우저 에서 에셋을 우클릭한 뒤, 에셋 액션(Asset Actions) > 에셋 및 종속성 유효성 검사(Validate Assets and Dependencies) 선택

지정한 에셋 및 종속성의 유효성을 검사합니다. 여러 에셋을 동시에 선택할 수도 있습니다.

폴더 내 에셋

콘텐츠 브라우저 에서 폴더를 우클릭한 뒤, 폴더 내 에셋 유효성 검사(Validate Assets in Folder) 선택

지정한 폴더의 유효성을 검사합니다. 검사할 때 여러 폴더를 동시에 선택할 수도 있습니다.

프로젝트의 에셋

메인 메뉴에서 파일(File) > 데이터 유효성 검사...(Validate Data...) 선택

프로젝트의 콘텐츠 디렉터리에 속한 모든 에셋의 유효성을 검사합니다.

명령줄 사용

지속적 통합 시스템(Continuous Integration System, CIS) 에서 에셋의 유효성을 검사하고자 하는 개발자는 플러그인을 명령줄에서 실행하는 편이 유용할 수 있습니다. 명령줄 유효성 검사는 다음 명령줄로 수행합니다.

UnrealEditor-Cmd.exe <PROJECT_NAME>.uproject -run=DataValidation

  • 데이터 유효성 검사 시스템은 디폴트로 C++ 검사 규칙만 실행합니다.

  • 개발자는 데이터 유효성 검사 시스템을 확장하여 블루프린트 및 Python 유효성 검사 규칙을 지원할 수 있습니다.

유효성 검사 규칙

현재 유효성 검사 규칙을 만드는 방법은 두 가지입니다.

  • IsDataValid 를 오버라이드하는 커스텀 UObject 파생 클래스를 만듭니다. 프로젝트의 커스텀 클래스를 대상으로는 가장 좋은 방법입니다.

    • 이 메서드를 사용하면 UEditorValidatorBase 메서드에서 액세스할 수 없는 프라이빗(Private)/프로텍티드(Protected) 클래스 데이터 및 함수에 액세스할 수 있습니다.

    • 이때 개발자는 독자적인 클래스를 구현하고 있으므로, BlueprintImplementableEventIsDataValid 에 의해 호출되도록 설정할 수도 있습니다. 따라서 일부 C++ 유효성 검사 로직뿐만 아니라 블루프린트 혹은 Python에서도 추가 유효성 검사 로직을 사용할 수 있습니다.

  • C++, 블루프린트, 혹은 Python를 사용한 UEditorValidatorBase 파생 클래스를 사용합니다. 여기서 중요한 두 개의 함수는 CanValidateAssetValidateLoadedAsset 으로, 둘 다 UObject 포인터를 유효성 검사에 필요한 실행인자로 가집니다. 이 시스템을 사용하면 기본 엔진 클래스인지, 커스텀 클래스인지에 따라 에셋의 유효성을 검사할 수 있습니다.

    • ValidateLoadedAsset 은 실행 패스별로 AssetPasses 또는 AssetFails 를 반드시 호출합니다.

    • Validators는 IsEnabled 를 오버라이드하여 활성화할 수 있습니다. Validators는 기본적으로 프로텍티드 변수 `bIsEnabled`를 반환하고 **디테일** 패널에도 노출합니다.

    • C++ 및 블루프린트 validators는 에디터를 시작할 때 자동으로 검출되지만, Python validators는 AddValidator 를 사용해 UEditorValidatorSubsystem 에 등록해야 합니다.

      • 포트나이트 에서는 퍼포먼스 상의 이유로 블루프린트 validator의 자동 등록 기능을 비활성화한 상태입니다.

두 유형의 유효성 검사 모두 에셋 저장 시 CIS에서 실행하거나(디폴트로 활성화), 에디터 및 콘텐츠 브라우저의 메뉴 옵션을 통해 실행할 수 있습니다. 유효성 검사에 실패하면 에디터의 메시지 로그 및 CIS의 콘솔에 메시지가 표시됩니다.

UEditorValidatorSubsystem 에 대한 호출을 구현하는 경우, ValidationErrors FText 배열의 표시를 직접 처리해야 합니다. FAssetData 혹은 로드된 UObject 의 에셋의 유효성을 검사할 때 필요한 함수는 스크립트에도 사용할 수 있습니다.

이 섹션에서는 해당 API를 참조하고 있습니다. 자세한 정보는 다음 페이지를 참조하세요.