UE4重定向机制十分强大,可在不同范围对类型和资源路径进行重定向。
在4.24.3版本中,有两套实现方案:ActiveXXXRedirects和XXXRedirects
ActiveXXXRedirects是老的实现方案,功能较弱,未来会被淘汰
XXXRedirects又叫CoreRedirects,是新一代的重定向方案,功能更强大,可满足各种情况下的类型及资源路径的重定向
ActiveXXXRedirects老方案
具体包括4种类型:ActiveGameNameRedirects、ActiveClassRedirects、ActivePluginRedirects、ActiveStructRedirects
定义在:UnrealEngine\Engine\Source\Runtime\Engine\Classes\Engine\Engine.h
USTRUCT()structFGameNameRedirect
{
GENERATED_USTRUCT_BODY()
UPROPERTY()
FName OldGameName;
UPROPERTY()
FName NewGameName;
};
USTRUCT()structFClassRedirect
{
GENERATED_USTRUCT_BODY()
UPROPERTY()
FName ObjectName;
UPROPERTY()
FName OldClassName;
UPROPERTY()
FName NewClassName;
UPROPERTY()
FName OldSubobjName;
UPROPERTY()
FName NewSubobjName;
UPROPERTY()
FName NewClassClass;
UPROPERTY()
FName NewClassPackage;
UPROPERTY()boolInstanceOnly;
};
USTRUCT()structFStructRedirect
{
GENERATED_USTRUCT_BODY()
UPROPERTY()
FName OldStructName;
UPROPERTY()
FName NewStructName;
};
USTRUCT()structFPluginRedirect
{
GENERATED_USTRUCT_BODY()
UPROPERTY()
FString OldPluginName;
UPROPERTY()
FString NewPluginName;
};
UCLASS(abstract, config=Engine, defaultconfig, transient)classENGINE_API UEngine
:publicUObject
,publicFExec
{//... ...
public:
UPROPERTY(config)
TArrayActiveGameNameRedirects;
UPROPERTY(config)
TArrayActiveClassRedirects;
UPROPERTY(config)
TArrayActivePluginRedirects;
UPROPERTY(config)
TArrayActiveStructRedirects;//... ...
};
XXXRedirects新方案
具体包括6种类型:ClassRedirects、StructRedirects、EnumRedirects、FunctionRedirects、PropertyRedirects、PackageRedirects
定义在:CoreRedirects.h和CoreRedirects.cpp
enumECoreRedirectFlags
{
None= 0,
Type_Object= 0x00000001,
Type_Class= 0x00000002, //ClassRedirects
Type_Struct = 0x00000004, //StructRedirects
Type_Enum = 0x00000008, //EnumRedirects
Type_Function = 0x0000