Latent 한 함수 사용 가능(Delay, Timeline 등)
Return 불가능
RPC 함수 작성 시 사용
Local Variable 불가능
Latent한 함수 사용 불가능(Main Thread에서 수행)
Return 가능
Override, Pure Virtual, Local Variable 가능
https://docs.unrealengine.com/5.3/ko/functions-in-unreal-engine/
class의 멤버나 상태를 변경하지 않음 -> const함수 또는 Utility 함수로 해석하면 될 듯
https://docs.unrealengine.com/5.3/ko/cpp-and-blueprints-example/
Interface를 구현하는게 아닌 상황에서도 BlueprintNativeEvent 지정자를 통해 Blueprint에서 재정의가 가능하도록 하고자 할 경우에는 역시 _Implementation이 필요
대신 Virtual할 필요도 없고 그렇다고 함수의 정의가 필요하지도 않음
https://docs.unrealengine.com/5.3/ko/asynchronous-asset-loading-in-unreal-engine/
Asset의 Path가 들어있는 Struct
FSoftObjectPath의 TWeakObjectPtr
Asset에 대한 meta data 검색 및 질의 지원 시스템
AssetRegistrySearchable tag가 UPROPERTY에 등록되어 있어야 함
AssetRegistry를 통해 검색된 결과가 저장되는 곳
if(!ObjectLibrary)
{
// @Param BaseClass 이 타입의 UClass만 Library에 담길 수 있음
ObjectLibrary = UObjectLibrary::CreateLibrary(BaseClass, false, GIsEditor);
ObjectLibrary->AddToRoot();
}
ObjectLibrary->LoadAssetDataFromPath(TEXT(Path));
if(bFullyLoad)
{
ObjectLibrary->LoadAssetFromAssetData();
}
ObjectLibrary를 통해 Asset Path 참조가 가능해지면 FStreamableManager를 통해 Asset Loading
void AssetLoader::GrantItems()
{
TArray<FSoftObjectPath> ItemsToStream;
FStreamableManager& StreamableManager = UGameGlobal::Get().StreamableManager;
for(TSoftObjectPtr<UGameItem> Item : ItemList)
{
ItemsToStream.Add(Item.ToStringReference());
}
StreamableManager.RequestAsyncLoad(ItemsToStream, FStreamableDelegate::CreateUObject(this, &AssetLoader::GrantItemsDeffered))
}
void AssetLoader::GrantItemsDeffered()
{
for(TSoftObjectPtr<UGameItem> Item : ItemList)
{
if(Item.Get())
{
MyPc->GrantItem(Item.Get());
}
}
}
AsyncLoad가 완료되면 FStreambleDelegate를 통해 등록한 함수가 수행
StreamableDelegate가 수행될 때까지는 Load된 Asset에 대한 강참조가 유지되지만, 그 이후로는 Reference가 사라지므로 Programmer가 참조를 유지하지 않는다면 GC가 수행됨
https://docs.unrealengine.com/5.3/ko/console-varaibles-cplusplus-in-unreal-engine/
Console 명령을 통해 변경될 수 있는 상태
Console 명령어 Help, DumpConsoleVariables?(DumpConsoleVariables는 확인되지 않고 DumpConsoleCommands는 확인됨)를 통해 확인 가능
C++ Code를 통해 추가, 검색, 수정 가능
Extern 변수를 이용해 구현하는 듯
https://docs.unrealengine.com/5.3/ko/core-redirects-in-unreal-engine/
기존에 작성된 변수명, 함수명 등을 수정할 때 Engine에서 기존 Asset 정보를 유지할 수 있도록 하는 기술
.ini파일에 작성
https://docs.unrealengine.com/5.3/ko/data-assets-in-unreal-engine/
Custom Data Asset을 만들 때 사용
Unty보다 간단한 느낌