The link above seems to be about counting the objects that my object references. I needed a way to count all the objects that reference my object instead. This seems to be the first result on Google for that sort of question, so here’s what worked for me in UE 5.3:
TArray<UObject*> GetReferencesToLiveObject(UObject* Obj)
{
if(!Obj || !Obj->IsValidLowLevelFast())
return {};
FReferencerInformationList List;
IsReferenced(Obj, RF_AllFlags, EInternalObjectFlags::AllFlags, true, &List);
TArray<UObject*> Referencers;
for (const auto& Reference : List.ExternalReferences)
Referencers.Add(Reference.Referencer);
return Referencers;
}
I personally chose to use AllFlags for those parameters because I didn’t want to miss anything, but potentially some of the results could be CDOs, or partway through destruction, or otherwise unhelpful. There might be nicer values that would exclude those.
Also, that Reference variable there has some other nice information in it that I didn’t need but might be useful to you:
- The number of times the
Reference.Referencerobject actually referencesObj - The properties of the
Reference.Referencerobject that are actually doing the referencing, stored inReference.ReferencingProperties.