UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
WidgetBlueprintGeneratedClass.cpp File Reference

Macros

#define LOCTEXT_NAMESPACE   "UMG"
 

Variables

FAutoConsoleCommand GDumpTemplateSizesCommand (TEXT("Widget.DumpTemplateSizes"), TEXT("Dump the sizes of all widget class templates in memory"), FConsoleCommandDelegate::CreateStatic([]() { struct FClassAndSize { FString ClassName;int32 TemplateSize=0;};TArray< FClassAndSize > TemplateSizes;for(TObjectIterator< UWidgetBlueprintGeneratedClass > WidgetClassIt;WidgetClassIt;++WidgetClassIt) { UWidgetBlueprintGeneratedClass *WidgetClass= *WidgetClassIt;if(WidgetClass->HasAnyClassFlags(CLASS_Abstract|CLASS_Deprecated|CLASS_NewerVersionExists)) { continue;} FClassAndSize Entry;Entry.ClassName=WidgetClass->GetName();if(UUserWidget *TemplateWidget=WidgetClass->GetDefaultObject< UUserWidget >()) { int32 TemplateSize=WidgetClass->GetStructureSize();if(const UWidgetTree *TemplateWidgetTree=WidgetClass->GetWidgetTreeArchetype()) { TemplateWidgetTree->ForEachWidget([&TemplateSize](UWidget *Widget) { TemplateSize+=Widget->GetClass() ->GetStructureSize();});} Entry.TemplateSize=TemplateSize;} TemplateSizes.Add(Entry);} TemplateSizes.StableSort([](const FClassAndSize &A, const FClassAndSize &B) { return A.TemplateSize > B.TemplateSize;});uint32 TotalSizeBytes=0;UE_LOG(LogUMG, Display, TEXT("%-60s %-15s"), TEXT("Template Class"), TEXT("Size (bytes)"));for(const FClassAndSize &Entry :TemplateSizes) { TotalSizeBytes+=Entry.TemplateSize;if(Entry.TemplateSize > 0) { UE_LOG(LogUMG, Display, TEXT("%-60s %-15d"), *Entry.ClassName, Entry.TemplateSize);} else { UE_LOG(LogUMG, Display, TEXT("%-60s %-15s"), *Entry.ClassName, TEXT("0 - (No Template)"));} } UE_LOG(LogUMG, Display, TEXT("Total size of templates %.3f MB"), TotalSizeBytes/(1024.f *1024.f));}), ECVF_Cheat)
 

Macro Definition Documentation

◆ LOCTEXT_NAMESPACE

#define LOCTEXT_NAMESPACE   "UMG"

Variable Documentation

◆ GDumpTemplateSizesCommand

FAutoConsoleCommand GDumpTemplateSizesCommand(TEXT("Widget.DumpTemplateSizes"), TEXT("Dump the sizes of all widget class templates in memory"), FConsoleCommandDelegate::CreateStatic([]() { struct FClassAndSize { FString ClassName; int32 TemplateSize=0; }; TArray< FClassAndSize > TemplateSizes; for(TObjectIterator< UWidgetBlueprintGeneratedClass > WidgetClassIt;WidgetClassIt;++WidgetClassIt) { UWidgetBlueprintGeneratedClass *WidgetClass=*WidgetClassIt; if(WidgetClass->HasAnyClassFlags(CLASS_Abstract|CLASS_Deprecated|CLASS_NewerVersionExists)) { continue; } FClassAndSize Entry; Entry.ClassName=WidgetClass->GetName(); if(UUserWidget *TemplateWidget=WidgetClass->GetDefaultObject< UUserWidget >()) { int32 TemplateSize=WidgetClass->GetStructureSize(); if(const UWidgetTree *TemplateWidgetTree=WidgetClass->GetWidgetTreeArchetype()) { TemplateWidgetTree->ForEachWidget([&TemplateSize](UWidget *Widget) { TemplateSize+=Widget->GetClass() ->GetStructureSize(); }); } Entry.TemplateSize=TemplateSize; } TemplateSizes.Add(Entry); } TemplateSizes.StableSort([](const FClassAndSize &A, const FClassAndSize &B) { return A.TemplateSize > B.TemplateSize; }); uint32 TotalSizeBytes=0; UE_LOG(LogUMG, Display, TEXT("%-60s %-15s"), TEXT("Template Class"), TEXT("Size (bytes)")); for(const FClassAndSize &Entry :TemplateSizes) { TotalSizeBytes+=Entry.TemplateSize; if(Entry.TemplateSize > 0) { UE_LOG(LogUMG, Display, TEXT("%-60s %-15d"), *Entry.ClassName, Entry.TemplateSize); } else { UE_LOG(LogUMG, Display, TEXT("%-60s %-15s"), *Entry.ClassName, TEXT("0 - (No Template)")); } } UE_LOG(LogUMG, Display, TEXT("Total size of templates %.3f MB"), TotalSizeBytes/(1024.f *1024.f)); }), ECVF_Cheat) ( TEXT("Widget.DumpTemplateSizes")  ,
TEXT("Dump the sizes of all widget class templates in memory" ,
FConsoleCommandDelegate::CreateStatic([]() { struct FClassAndSize { FString ClassName; int32 TemplateSize=0; }; TArray< FClassAndSize > TemplateSizes; for(TObjectIterator< UWidgetBlueprintGeneratedClass > WidgetClassIt;WidgetClassIt;++WidgetClassIt) { UWidgetBlueprintGeneratedClass *WidgetClass=*WidgetClassIt; if(WidgetClass->HasAnyClassFlags(CLASS_Abstract|CLASS_Deprecated|CLASS_NewerVersionExists)) { continue; } FClassAndSize Entry; Entry.ClassName=WidgetClass->GetName(); if(UUserWidget *TemplateWidget=WidgetClass->GetDefaultObject< UUserWidget >()) { int32 TemplateSize=WidgetClass->GetStructureSize(); if(const UWidgetTree *TemplateWidgetTree=WidgetClass->GetWidgetTreeArchetype()) { TemplateWidgetTree->ForEachWidget([&TemplateSize](UWidget *Widget) { TemplateSize+=Widget->GetClass() ->GetStructureSize(); }); } Entry.TemplateSize=TemplateSize; } TemplateSizes.Add(Entry); } TemplateSizes.StableSort([](const FClassAndSize &A, const FClassAndSize &B) { return A.TemplateSize > B.TemplateSize; }); uint32 TotalSizeBytes=0; UE_LOG(LogUMG, Display, TEXT("%-60s %-15s"), TEXT("Template Class"), TEXT("Size (bytes)")); for(const FClassAndSize &Entry :TemplateSizes) { TotalSizeBytes+=Entry.TemplateSize; if(Entry.TemplateSize > 0) { UE_LOG(LogUMG, Display, TEXT("%-60s %-15d"), *Entry.ClassName, Entry.TemplateSize); } else { UE_LOG(LogUMG, Display, TEXT("%-60s %-15s"), *Entry.ClassName, TEXT("0 - (No Template)")); } } UE_LOG(LogUMG, Display, TEXT("Total size of templates %.3f MB"), TotalSizeBytes/(1024.f *1024.f));})  ,
ECVF_Cheat   
)