블루프린트 네임스페이스
블루프린트 네임스페이스(Blueprint Namespaces) 는 불필요한 에셋이 로드되는 것을 방지함으로써 에디터에서 블루프린트 에셋을 여는 데 걸리는 시간을 최적화합니다. 사용자가 연 블루프린트가 해당 라이브러리를 참조하는지와 상관없이 엔진은 모든 블루프린트 함수 라이브러리 및 매크로 라이브러리 에셋을 로드하여 초기화 작업을 수행하므로 이 행동은 대규모 프로젝트에 유용합니다.
에셋을 블루프린트 네임스페이스에 그룹화함으로써 필요할 때까지 에셋 로딩을 연기할 수 있습니다. 이렇게 하면 블루프린트 에디터 내에서 작업할 때 블루프린트 에셋이 컨텍스트 메뉴에서 수행할 수 있는 모든 액션이 블루프린트 네임스페이스로 필터링되므로 추가적인 이점을 누릴 수 있습니다.
기능 사용하기
아래 단계에 따라 이 기능의 작동 예시를 확인할 수 있습니다.
-
먼저 게임(Games) > 빈 프로젝트(Blank Project) 를 클릭하고 시작용 콘텐츠(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로 지정했습니다.
-
컴파일 및 저장 을 클릭한 다음, 에디터를 다시 실행합니다.
-
콘텐츠 드로어(Content Drawer) 를 클릭하고 콘텐츠 > 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) 을 클릭합니다.
-
콘텐츠 > StarterContent > Blueprints 로 이동한 다음, Blueprint_CeilingLight 를 더블클릭하여 클래스 디폴트(Class Defaults) 를 엽니다.
-
클래스 디폴트(Class Defaults) 에서 이벤트 그래프(Event Graph) 로 이동한 다음, 우클릭하여 액션(Actions) 메뉴를 엽니다. Filtered Function 을 검색하면 컨텍스트 메뉴에 표시됩니다.