블루프린트 네이티브화 고급

블루프린트에 게임플레이 요소를 노출시키는 게임플레이 프로그래머를 위한 기술 안내서입니다.

Choose your operating system:

Windows

macOS

Linux

필요한 사전지식

이 페이지의 콘텐츠를 이해하고 활용하기 위해 다음 주제를 숙지해 주세요.

언리얼 자동화 툴로 빌드

명령줄에서 Unreal Automation Tool (언리얼 자동화 툴)로 빌드를 하면서 블루프린트를 네이티브화 시키기 위해서는, BuildCookRun 명령줄에 -nativizeAssets 스위치를 추가합니다.

헤더 선언

네이티브화된 블루프린트는 새로운 별도의 모듈에 저장되는데, 게임플레이 모듈에서 온 헤더를 이제 원래 모듈 밖에서도 사용할 수 있다는 뜻입니다. 모든 헤더에 사용되는 클래스와 구조체 전부가 선언되었는지, 헤더를 포함시켜서든 직접 선언을 해서든 확인해 줘야 합니다.

없는 헤더 수정

여러 프로젝트에 통합 헤더가 있는데, [GameName]/[GameName].h 아니면 [GameName]/Public/[GameName].h 입니다.

  • 이 헤더의 DefaultEditor.ini [BlueprintNativizationSettings] 섹션의 FilesToIncludeInModuleHeader 에 경로를 추가하면, 헤더가 없어서 발생하는 문제가 많이 해결될 수 있습니다.

코드 협동 작업

손수 작성한 코드와 네이티브화된 코드 사이 협동의 안정성과 효율성을 높이는 데 알아두면 좋을 제약 사항이 몇 가지 있습니다. 지원되지 않는 구현은 다음과 같습니다:

  • BlueprintPure 또는 BlueprintCallable 로 마킹된 Private 및 Protected 함수

  • noexport 구조체 및 클래스

  • BlueprintVisible 또는 Editable 태그가 붙은 비트필드 변수

  • Private 비트필드 변수

  • UBlueprintGeneratedClass , UUserDefinedStruct , UUserDefinedEnum 변수 (또는 이 변수를 기반으로 한 유형)

기술적 세부사항

컴파일러 또는 링커 (LNK1000 또는 LNK1248 같은) 오류가 발생하면, DefaultEngine.ini 환경설정 파일에서 블루프린트 유형 또는 특정 블루프린트들을 제외시켜 프로젝트에서 네이티브화되는 블루프린트 양을 줄여 보시기 바랍니다. 블루프린트를 네이티브화 대상에서 제외시키는 방법 관련 상세 정보는 블루프린트 네이티브화 문서를 참고하세요.

블루프린트 네이티브화 프로세스가 내부적으로 어떻게 작동되는지 궁금하신 분들은, 다음 모듈을 살펴보시기 바랍니다:

  • BlueprintCompilerCppBackend 모듈(이 있는 위치는 Engine\Source\Developer\BlueprintCompilerCppBackend\ ) 은 블루프린트 문법 트리를 C++ 로 변환합니다.

  • BlueprintNativeCodeGen 모듈(이 있는 위치는 Engine\Source\Developer\BlueprintNativeCodeGen\ ) 은 쿠킹과 패키징 도중 여러가지 마법같은 작업을 합니다.

언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
건너뛰기