애셋 4

[언리얼 C++] 언리얼 프로젝트(애셋, 레벨, 액터)

언리얼 프로젝트의 모든 것은 프로젝트 디렉터리에 들어있습니다. 프로젝트는 원하는 갯수만큼 만들 수 있지만, 각각은 그 자체로 완결성을 가집니다. 언리얼 엔진의 프로젝트 브라우저를 사용하여 새 프로젝트를 생성하면 디렉터리 구조나 언리얼 에디터에서 열어볼 수 있는 언리얼 프로젝트 파일([ProjectName].uproject) 등의 필수 프로젝트 프레임워크가 구성됩니다. 1. 애셋 애셋은 프로젝트의 Content 폴더에 들어있으며, .uasset 파일로 저장됩니다. 애셋에는 머티리얼, 스태틱/스켈레탈 메시, 블루프린트, 사운드 큐, 텍스처 등이 포함되며, 이들은 프로젝트의 오브젝트에서 불러올 수 있는 템플릿입니다. 2. 레벨 레벨 또한 프로젝트의 Content 폴더에 들어있으며, .umap 파일로 저장됩니다..

[언리얼 C++] Asset 레지스트리

Asset 레지스트리는 에디터가 로드되면서 로드되지 않은 Asset에 대한 정보를 비동기적으로 모으는 에디터 서브시스템입니다. 이 정보는 에디터가 Asset을 로드하지 않고 목록을 만들 수 있도록 메모리에 저장됩니다. 이 정보는 메모리의 Asset이나 디스크의 파일이 변경되면 최신으로 자동 유지됩니다. 1. Asset 목록 구하기 클래스별 Asset 목록을 만들려면, Asset 레지스트리 모듈을 로드한 다음 Module.Get().GetAssetsByClass() 함수를 부르기만 하면 됩니다. FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked("AssetRegistry"); TArray AssetData; const..

[언리얼 C++] Asset 레퍼런스

언리얼 엔진 4에서 Asset 레퍼런스는 두 가지 방식으로 생각해 볼 수 있습니다. 하나는 오브젝트 A가 오브젝트 B를 참조하여 오브젝트 A 로드시 오브젝트 B도 함께 로드되도록 만드는 강참조이고, 다른 하나는 오브젝트 경로가 같은 문자열 형태의 간접 메커니즘을 통해 오브젝트 A가 오브젝트 B를 참조하게 만드는 약참조입니다. 1. 직접 프로퍼티 참조(강참조) Asset 레퍼런스의 가장 흔한 경우로 UPROPERTY 매크로를 통해 노출됩니다. C++ 클래스에서 UPROPERTY로 지정한 변수를 선언하고, 해당 클래스를 상속 받는 블루프린트를 생성하면 블루프린트에서 UPROPERTY로 지정한 변수를 참조할 수 있습니다. UPROPERTY(EditAnywhere, Category=Mesh) UStaticMes..

[언리얼 C++] 비동기 애셋 로딩

UE4에서 비동기 애셋 로딩이란 실행시간에 애셋을 로드/언로드하는 메서드를 의미합니다. 비동기 애셋 로딩은 개발 도중이나 디바이스상에서 쿠킹된 데이터로 실행할 때나 동일하게 작동하므로, 필요에 따라 데이터를 로딩하기 위한 별도의 코드 패스를 유지할 필요가 없습니다. 이렇게 필요에 따라 데이터를 로드 및 참조에 사용되는 방법은 일반적으로 두가지가 있습니다. 1. FSoftObjectPath와 TSoftObjectPtr FSoftObjectPath는 애셋의 전체 이름으로 된 스트링이 들어있는 단순한 구조체입니다. 클래스에 이 유형의 프로퍼티를 만들면, 에디터에는 마치 UObject* 프로퍼티인 양 나타납니다. 쿠킹과 리디렉터도 제대로 처리되므로, FSoftObjectPath가 있다면 디바이스에서의 정상 작동..