게임 개발/Unreal Engine 기본
[UE4] UObject의 참조 카운트(UObject Reference Count)
지노윈
2022. 2. 10. 15:33
반응형
어떠한 오브젝트의 참조 카운트를 얻을 수 있는 코드입니다.
static int32 URamaStaticFunctionLib::GetObjReferenceCount(UObject* Obj, TArray<UObject*>* OutReferredToObjects = nullptr)
{
if(!Obj || !Obj->IsValidLowLevelFast())
{
return -1;
}
TArray<UObject*> ReferredToObjects; //req outer, ignore archetype, recursive, ignore transient
FReferenceFinder ObjectReferenceCollector(ReferredToObjects, Obj, false, true, true, false);
ObjectReferenceCollector.FindReferences(Obj);
if(OutReferredToObjects)
{
OutReferredToObjects->Append(ReferredToObjects);
return OutReferredToObjects->Num();
}
return ReferredToObjects.Num();
}
누가 오브젝트를 참조 하고 있는가?
정확히 어떤한 오브젝트가 참조하고 있는지 TArray로 넘겨 받을 수 있습니다.
TArray<UObject*> ReferredToObjs;
GetObjReferenceCount(this,&ReferredToObjs);
for(UObject* Each : ReferredToObjs)
{
if(Each)
{
UE_LOG(YourLog,Warning,TEXT("%s"), *Each->GetName());
}
}
출처
https://nerivec.github.io/old-ue4-wiki/pages/garbage-collection-count-references-to-any-object.html