23.12.07

신승빈·2023년 12월 7일

UE

목록 보기
5/15

CustomEvent VS Function

CustomEvent

Latent 한 함수 사용 가능(Delay, Timeline 등)


Return 불가능


RPC 함수 작성 시 사용


Local Variable 불가능

Function

Latent한 함수 사용 불가능(Main Thread에서 수행)


Return 가능


Override, Pure Virtual, Local Variable 가능

Function

https://docs.unrealengine.com/5.3/ko/functions-in-unreal-engine/

Pure

class의 멤버나 상태를 변경하지 않음 -> const함수 또는 Utility 함수로 해석하면 될 듯

BlueprintNativeEvent

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/

FSoftObjectPath

Asset의 Path가 들어있는 Struct

TSoftObjectPtr

FSoftObjectPath의 TWeakObjectPtr

AssetRegistry

Asset에 대한 meta data 검색 및 질의 지원 시스템


AssetRegistrySearchable tag가 UPROPERTY에 등록되어 있어야 함

ObjectLibrary

AssetRegistry를 통해 검색된 결과가 저장되는 곳

if(!ObjectLibrary)
{
    // @Param BaseClass 이 타입의 UClass만 Library에 담길 수 있음
    ObjectLibrary = UObjectLibrary::CreateLibrary(BaseClass, false, GIsEditor);
    ObjectLibrary->AddToRoot();
}
ObjectLibrary->LoadAssetDataFromPath(TEXT(Path));
if(bFullyLoad)
{
    ObjectLibrary->LoadAssetFromAssetData();
}

StreamableManager

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가 수행됨

Console 변수

https://docs.unrealengine.com/5.3/ko/console-varaibles-cplusplus-in-unreal-engine/

Console Variable

Console 명령을 통해 변경될 수 있는 상태


Console 명령어 Help, DumpConsoleVariables?(DumpConsoleVariables는 확인되지 않고 DumpConsoleCommands는 확인됨)를 통해 확인 가능
C++ Code를 통해 추가, 검색, 수정 가능
Extern 변수를 이용해 구현하는 듯

Core Redirect

https://docs.unrealengine.com/5.3/ko/core-redirects-in-unreal-engine/


기존에 작성된 변수명, 함수명 등을 수정할 때 Engine에서 기존 Asset 정보를 유지할 수 있도록 하는 기술


.ini파일에 작성

Data Asset

https://docs.unrealengine.com/5.3/ko/data-assets-in-unreal-engine/


Custom Data Asset을 만들 때 사용


Unty보다 간단한 느낌

profile
이상을 길잡이 삼아 로망을 추구합니다.

0개의 댓글