블루프린트 네임스페이스
블루프린트 네임스페이스(Blueprint Namespaces) 는 불필요한 에셋의 로드를 방지하여 에디터에서 블루프린트 에셋을 여는 시간을 최적화합니다. 이 행동은 대규모 프로젝트에서 유용합니다. 엔진은 열려는 블루프린트의 레퍼런스 여부와 무관하게 블루프린트 펑션 라이브러리와 매크로 라이브러리 에셋을 모두 로드하여 초기화 작업을 수행하기 때문입니다.
블루프린트 네임스페이스로 에셋 그룹을 구분하면 에셋의 로딩을 에셋이 필요해질 때까지 미룰 수 있습니다. 이러면 블루프린트 에디터 작업에 추가적인 장점도 있습니다. 블루프린트 에셋이 컨텍스트 메뉴에서 실행할 수 있는 액션이 블루프린트 네임스페이스로 필터링된다는 것입니다.
기능 사용하기
이 기능의 사용 사례를 보려면 다음 단계를 따릅니다.
-
먼저 게임(Games) > 기본(Blank) 프로젝트를 생성합니다. 시작용 콘텐츠(Starter Content) 를 활성화하고, 프로젝트 이름은 BlueprintNamespaces 로 명명합니다.
-
콘텐츠 드로어(Content Drawer) 를 클릭하여 열고 StaterContent > Blueprints 로 이동한 다음 Blueprint_CeilingLight 블루프린트를 더블클릭하여 이 블루프린트의 클래스 디폴트(Class Defaults) 를 엽니다.
-
툴바 의 클래스 세팅(Class Settings) 을 클릭하고 디테일(Details) 패널의 블루프린트 옵션(Blueprint Options) 카테고리로 이동합니다. 블루프린트 네임스페이스(Blueprint Namespace) 변수의 텍스트 필드에 네임스페이스를 입력합니다.
샘플에서는 블루프린트 네임스페이스를 'BlueprintNamespaces.StarterContent'로 명명했습니다.
블루프린트 네임스페이스 텍스트 필드에 네임스페이스를 입력하면 에디터가 스트링의 유효성을 검사하여 '#' 또는 ',' 등 지원되지 않는 문자가 있는지 확인합니다.
-
컴파일(Compile) 을 클릭하고 블루프린트 를 저장(Save) 합니다.
-
콘텐츠 브라우저(Content Browser) 로 이동한 다음 Blueprint_CeilingLight 에셋에 마우스를 올려 툴팁에 표시되는 네임스페이스 데이터를 읽습니다.
에디터를 실행한 뒤 콘텐츠 브라우저에서 'BlueprintNamespace=StarterContent'를 검색하여 이미 네임스페이스가 할당된 라이브러리 에셋을 확인할 수 있습니다.
새로 생성된 에셋 중 하나에 대한 레퍼런스를 포함하는 블루프린트 에셋을 열면, 레퍼런스하는 블루프린트의 패키지가 임포트 종속성에 의해 로드됩니다. 레퍼런스하는 부모 블루프린트 클래스를 새 블루프린트의 베이스로 지정할 때도 동일한 일이 발생합니다.
네임스페이스 임포트하기
임포트는 .cpp
소스 파일의 라이브러리 헤더에 '#include'를 추가하는 것과 유사한 프로세스입니다. 블루프린트 네임스페이스로 작업할 때 다음 메서드 중 하나를 통해 네임스페이스를 임포트할 수 있습니다.
블루프린트 네임스페이스 구성하기
블루프린트 네임스페이스를 에디터에서 액세스할 네임스페이스 그룹에 추가하려면 다음 단계를 따릅니다.
-
콘텐츠 드로어(Content Drawer) 를 열고 블루프린트 를 더블클릭하여 클래스 디폴트(Class Defaults) 를 엽니다.
-
툴바 의 클래스 세팅(Class Settings) 을 클릭하고 디테일(Details) 패널의 블루프린트 옵션(Blueprint Options) > 블루프린트 네임스페이스(Blueprint Namespace) 카테고리로 이동한 다음 텍스트 필드에 네임스페이스를 입력합니다.
-
툴바 의 컴파일(Compile) 과 저장(Save) 을 클릭합니다.
블루프린트를 열면 블루프린트 에디터가 초기화되면서 동일한 네임스페이스로 설정된 공유 라이브러리 에셋이 자동으로 임포트됩니다.
에디터 개인설정 또는 프로젝트 세팅 수정하기
공유 라이브러리 에셋이 모든 블루프린트 에셋에 대해 자동으로 임포트되는 워크플로를 선호하는 경우, 에디터 개인설정(Editor Preferences) 또는 프로젝트 세팅(Project Settings) 을 수정하여 열린 블루프린트가 해당 네임스페이스에 속해있는지, 해당 네임스페이스에 블루프린트를 임포트할지 여부와 관계없이 에디터가 공유 라이브러리 에셋의 지정된 서브셋을 임포트하게 할 수 있습니다.
에디터 개인설정을 편집하면 사용자별 로컬 인스턴스에 적용되고, 프로젝트 세팅을 편집하면 전체 프로젝트 범위에 적용됩니다. 그러면 프로젝트의 소스 컨트롤을 공유하는 모든 사용자에게 영향을 미칩니다.*
로컬 에디터 인스턴스에 대한 디폴트 임포트 세트를 구성하려면 다음 단계를 따릅니다.
-
툴바 에서 편집(Edit) > 에디터 개인설정(Editor Preferences) > 콘텐츠 에디터(Content Editors) > 블루프린트 에디터(Blueprint Editor) > 실험단계 기능(Experimental) 으로 이동한 다음, 항상 포함할 네임스페이스(Namespaces to Always Include) 필드의 추가 (+ ) 버튼을 클릭하여 네임스페이스를 배열 엘리먼트로 추가합니다.
에디터 개인설정으로 이동하면 블루프린트 에디터에 설정된 글로벌 네임스페이스를 로컬에서 수정할 수 있습니다.
모든 사용자에 적합하게 프로젝트를 커스터마이징하여 공유 라이브러리 에셋의 특정 서브셋이 항상 프로젝트 전체에 임포트되게 하려면 아래 단계에 따라 이 기능을 활성화합니다.
-
편집(Edit) > 프로젝트 세팅(Project Settings) > 에디터(Editor) > 블루프린트 프로젝트 세팅(Blueprint Project Settings) > 실험단계 기능(Experimental) 으로 이동한 다음 항상 포함할 네임스페이스(Namespaces to Always Include) 배열 목록에서 추가 (+ )를 클릭하여 목록에 네임스페이스를 추가합니다.
프로젝트 세팅에서 'BlueprintNamespaces.StarterContent'라는 네임스페이스를 포함하도록 블루프린트 프로젝트 세팅을 편집했습니다.
-
추가 (+ ) 버튼을 클릭하여 블루프린트에 하나 이상의 네임스페이스를 명시적으로 임포트하도록 선택할 수 있습니다.
-
임포트를 추가하면 현재 네임스페이스에 할당된 공유 라이브러리가 모두 즉시 로드됩니다.
-
임포트를 제거해도 에디터의 퍼포먼스에 부정적인 영향을 미치지는 않지만, 해당 네임스페이스와 관련된 타입 및 액션 메뉴 필터링 행동을 사용할 수 없게 됩니다.
암시적인 네임스페이스 임포트하기
컨텍스트 메뉴에서 임포트되지 않은 타입 또는 액션 항목을 선택하여 암시적으로 네임스페이스를 임포트할 수 있습니다. 언로드 상태의 타입 선택 툴을 선택하고 강한 레퍼런스 타입을 선택하면, 해당 타입의 패키지가 로드됩니다.
이는 자동 임포트 동작과 상충되는 것처럼 보이지만, 임포트되지 않은 타입을 선택하면 해당 타입의 네임스페이스를 위 메서드에 설명된 블루프린트의 명시적 임포트 세트에 암시적으로 추가하는 또 하나의 단계를 거치게 됩니다.
이 기능의 사용 예시를 보려면 다음 단계를 따릅니다.
-
TestType 이라는 이름의 새 블루프린트 에셋을 생성한 다음, 클래스 세팅(Class Settings) > 디테일(Details) > 블루프린트 옵션(Blueprint Options) 으로 이동하여 'YourNameSpace.AutoImportTest'라는 네임스페이스를 할당합니다.
이 예시에서는 블루프린트 네임스페이스를 'BlueprintNamespaces.AutoImportTest'로 명명했습니다.
-
컴파일(Compile) 과 저장(Save) 을 클릭하고 에디터를 재실행합니다.
-
콘텐츠 드로어(Content Drawer) 를 클릭하고 Content > StarterContent > Blueprints 로 이동한 다음 Blueprint_CeilingLight 를 더블클릭하여 이 블루프린트의 클래스 디폴트(Class Defaults) 를 엽니다.
기존 블루프린트를 열거나 새 블루프린트를 생성해도 됩니다. 이 예시에서는 기존의 Blueprint_CeilingLight를 사용합니다.
-
클래스 디폴트(Class Defaults) 에서 내 블루프린트(My Blueprint) > 변수(Variables) 로 이동한 다음 추가 (+ )를 클릭하여 TestTypeVar 라는 새 변수를 생성합니다.
-
부울(Boolean) 드롭다운 화살표를 클릭하여 핀 타입 선택 툴을 연 다음, 텍스트 필드에서 테스트 타입(TestType) 을 검색하여 선택하고 오브젝트 레퍼런스(Object Reference) 를 선택합니다.
-
클래스 세팅(Class Settings) 을 클릭한 다음 디테일(Details) 패널 > 임포트(Imports) > 임포트된 네임스페이스(Imported Namespaces) 로 이동하면, 이제 임포트된 네임스페이스 카테고리에 YourNamespace.AutoImportTest가 표시될 것입니다.
타입을 언로드하지 않아도 자동 임포트를 사용할 수 있습니다. 네임스페이스는 글로벌이 아니고 아직 임포트되지 않은 경우 선택 시 자동 임포트됩니다. 네임스페이스 임포트 기능을 활성화하면 해당 에셋의 네임스페이스가 블루프린트로 자동 임포트됩니다.
-
함수 입력 실행인자에서 디폴트값을 변경하면 로컬 변수가 해당 값과 관련된 모든 네임스페이스를 임포트합니다.
-
구조체 또는 컨테이너 타입의 디폴트값을 변경하면 해당 컨테이너의 내부 값 및 구조체 자손 구성원 프로퍼티와 관련된 네임스페이스가 모두 임포트됩니다.
-
컴포넌트 패널에 새 컴포넌트를 추가하면 선택된 컴포넌트 타입과 관련된 모든 네임스페이스가 자동으로 임포트됩니다. 이 행동은 임포트되지 않은 컴포넌트 타입에도 적용됩니다.
임포트되지 않은 타입 및 액션 필터링하기
임포트되지 않은 타입 및 액션은 기본적으로 컨텍스트 메뉴에 표시됩니다. 임포트되지 않은 타입에 대한 추가 필터링 계층을 활성화하려면 다음 단계를 따릅니다.
-
콘텐츠 드로어(Content Drawer) 를 클릭한 다음 추가(+) > 고급 에셋 생성(Create an Advanced Asset) > 블루프린트(Blueprints) > 블루프린트 함수 라이브러리(Blueprint Function Library) 를 선택하여 Bp_FilterFunctionLibrary 라는 라이브러리를 생성합니다.
-
Bp_FilterFunctionLibrary 를 더블클릭하여 이 라이브러리의 클래스 디폴트(Class Defaults) 를 엽니다. 내 블루프린트(My Blueprint) 패널에서 함수(Functions) 카테고리로 이동한 다음 NewFunction_0 의 이름을 FilteredFunction_0 으로 변경합니다. 클래스 세팅(Class Settings) 에서 디테일(Details) > 블루프린트 옵션(Blueprint Options) > 블루프린트 네임스페이스(Blueprint Namespaces) 로 이동한 다음 'YourNamespace.FilterTest'를 입력합니다.
이 예시에서는 'BlueprintNamespaces.FilterTest'를 입력하면 됩니다.
-
추가(+) 버튼을 클릭하여 FilteredFunction_1 이라는 이름의 새 함수를 생성합니다.
-
클래스 세팅(Class Settings) 을 클릭한 다음 디테일(Details) 패널에서 블루프린트 옵션(Blueprint Options) > 블루프린트 네임스페이스(Blueprint Namespace) 로 이동하여 드롭다운 메뉴에서 네임스페이스 'YourNamespace.FilterTest'를 선택합니다. 아래 예시에서는 'BlueprintNamespaces.FilterTest'를 선택하면 됩니다.
-
컴파일(Compile) 과 저장(Save) 을 클릭합니다.
-
콘텐츠(Content) > StarterContent > Blueprints 로 이동한 다음 Blueprint_CeilingLight 를 더블클릭하여 이 블루프린트의 클래스 디폴트(Class Defaults) 를 엽니다.
-
클래스 디폴트(Class Defaults) 에서 이벤트 그래프(Event Graph) 로 이동한 다음 우클릭하여 액션(Actions) 메뉴를 엽니다. 이제 Filtered Function 을 검색하면 컨텍스트 메뉴에 새 함수가 나타납니다.