使用模板遍历Actor
- 模板定义
template <typename T>
void UGlobalHelperTool::FindAllActors(UWorld* World, TArray<T*>& Out)
{
for (TActorIterator<T> It(World); It; ++It)
{
Out.Add(*It);
}
}
- 使用
TArray<ABNBasePostProcessVolume*> PostProcessInstArr;
UGlobalHelperTool::FindAllActors(GEditor->GetEditorWorldContext().World(),PostProcessInstArr);
使用模板遍历DataTable
- 模板定义
template <typename T>
void UDataHelperTool::ReadDataFromDataTable(TArray<T>& TempAr, const FString DataTablePath)
{
const UDataTable* DataTable_P = LoadObject<UDataTable>(NULL,*DataTablePath);
if (!DataTable_P) return;
TArray<FName> RowNames = DataTable_P->GetRowNames();
for (const auto& Name : RowNames)
{
T* Row = DataTable_P->FindRow<T>(Name,FString(""));
TempAr.Add(*Row);
}
}
- 使用
TArray<FPostProcessConfig> UPostProcessSystem::PostProcessConfigArr;
UDataHelperTool::ReadDataFromDataTable(PostProcessConfigArr,DataTablePath.ToString())
编辑器下获取UWorld类