判断一个Package是否是重定向器最近在做一个构建需求的时候需要处理重定向器的问题一开始用UEditorAssetLibrary::LoadAsset加载出来判断但是无法处理umap之后改用AssetRegistry扫出来判断类型效率也还行在此做一下记录构造出一个umap的重定向器来实验C实现boolUBlueprintFunctionLibraryExtend::IsPackageRedirector(constFStringPackageName){FAssetRegistryModuleAssetRegistryModuleFModuleManager::LoadModuleCheckedFAssetRegistryModule(AssetRegistry);IAssetRegistryAssetRegistryAssetRegistryModule.Get();FString PackagePathFPaths::GetPath(PackageName);FString AssetNameFPaths::GetBaseFilename(PackageName);TArrayFAssetDataAssetDatas;AssetRegistry.GetAssetsByPath(FName(*PackagePath),AssetDatas,false);for(constFAssetDataAssetData:AssetDatas){if(AssetData.AssetName.ToString()AssetName){returnAssetData.AssetClassFName(TEXT(ObjectRedirector));}}UE_LOG(LogTemp,Error,TEXT([Error] Cant find asset data for %s.),*PackageName);returnfalse;}Python实现importosimportunreal asset_registryNonedefis_package_redirector(package_name)-bool: 判断一个Package Name指向的资产是否是重定向器 Args: package_name (str): 资产Package名 Returns: bool: package_name指向的资产是否是重定向器 globalasset_registryifasset_registryisNone:asset_registryunreal.AssetRegistryHelpers.get_asset_registry()asset_nameos.path.basename(package_name)forasset_datainasset_registry.get_assets_by_path(os.path.dirname(package_name),recursiveFalse):asset_data:unreal.AssetDataifasset_data.asset_nameasset_name:returnasset_data.asset_classObjectRedirectorunreal.log_error(f[Error] Cant find asset data for {package_name}.)returnFalse