vault backup: 2024-10-12 17:19:45
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
# IncludePath
|
||||
|
||||
- **功能描述:** 记录UClass的引用路径
|
||||
- **使用位置:** UCLASS
|
||||
- **引擎模块:** UHT
|
||||
- **元数据类型:** string="abc"
|
||||
- **限制类型:** UCLASS上的信息
|
||||
- **常用程度:** 0
|
||||
|
||||
记录UClass的引用路径。
|
||||
|
||||
开发者一般也不用管这个值。
|
||||
|
||||
有一个作用是在UHT生成.gen.cpp的时候,在头文件部分方便引用到该类的头文件。
|
||||
|
||||
## 测试代码:
|
||||
|
||||
```cpp
|
||||
UCLASS(BlueprintType)
|
||||
class INSIDER_API UMyProperty_Template :public UObject
|
||||
{
|
||||
GENERATED_BODY()
|
||||
public:
|
||||
UFUNCTION(BlueprintCallable)
|
||||
int32 MyFunc(FString str){return 0;}
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
int32 MyProperty = 123;
|
||||
};
|
||||
```
|
||||
|
||||
## 其类型信息:
|
||||
|
||||
```cpp
|
||||
[class MyProperty_Template Class->Struct->Field->Object /Script/Insider.MyProperty_Template]
|
||||
(BlueprintType = true, IncludePath = Property/MyProperty_Template.h, ModuleRelativePath = Property/MyProperty_Template.h)
|
||||
ObjectFlags: RF_Public | RF_Standalone | RF_Transient
|
||||
Outer: Package /Script/Insider
|
||||
ClassHierarchy: MyProperty_Template:Object
|
||||
ClassFlags: CLASS_MatchedSerializers | CLASS_Native | CLASS_RequiredAPI | CLASS_TokenStreamAssembled | CLASS_Intrinsic | CLASS_Constructed
|
||||
Size: 56
|
||||
Within: Object
|
||||
ClassConfigName: Engine
|
||||
{
|
||||
(Category = MyProperty_Template, ModuleRelativePath = Property/MyProperty_Template.h)
|
||||
48-[4] int32 MyProperty;
|
||||
PropertyFlags: CPF_Edit | CPF_BlueprintVisible | CPF_ZeroConstructor | CPF_IsPlainOldData | CPF_NoDestructor | CPF_HasGetValueTypeHash | CPF_NativeAccessSpecifierPublic
|
||||
ObjectFlags: RF_Public | RF_MarkAsNative | RF_Transient
|
||||
Outer: Class /Script/Insider.MyProperty_Template
|
||||
Path: IntProperty /Script/Insider.MyProperty_Template:MyProperty
|
||||
[func MyFunc Function->Struct->Field->Object /Script/Insider.MyProperty_Template:MyFunc]
|
||||
(ModuleRelativePath = Property/MyProperty_Template.h)
|
||||
ObjectFlags: RF_Public | RF_Transient
|
||||
Outer: Class /Script/Insider.MyProperty_Template
|
||||
FunctionFlags: FUNC_Final | FUNC_Native | FUNC_Public | FUNC_BlueprintCallable
|
||||
NumParms: 2
|
||||
ParmsSize: 20
|
||||
ReturnValueOffset: 16
|
||||
RPCId: 0
|
||||
RPCResponseId: 0
|
||||
public int32 MyFunc(FString str)final;
|
||||
{
|
||||
0-[16] FString str;
|
||||
PropertyFlags: CPF_Parm | CPF_ZeroConstructor | CPF_HasGetValueTypeHash | CPF_NativeAccessSpecifierPublic
|
||||
ObjectFlags: RF_Public | RF_MarkAsNative | RF_Transient
|
||||
Outer: Function /Script/Insider.MyProperty_Template:MyFunc
|
||||
Path: StrProperty /Script/Insider.MyProperty_Template:MyFunc:str
|
||||
16-[4] int32 ReturnValue;
|
||||
PropertyFlags: CPF_Parm | CPF_OutParm | CPF_ZeroConstructor | CPF_ReturnParm | CPF_IsPlainOldData | CPF_NoDestructor | CPF_HasGetValueTypeHash | CPF_NativeAccessSpecifierPublic
|
||||
ObjectFlags: RF_Public | RF_MarkAsNative | RF_Transient
|
||||
Outer: Function /Script/Insider.MyProperty_Template:MyFunc
|
||||
Path: IntProperty /Script/Insider.MyProperty_Template:MyFunc:ReturnValue
|
||||
};
|
||||
};
|
||||
```
|
||||
|
||||
## 原理:
|
||||
|
||||
同样也是在UHT中分析后添加的。具体的逻辑值请见ModuleRelativePath中的原理代码部分。
|
||||
|
||||
```cpp
|
||||
protected override void UhtClass::ResolveSuper(UhtResolvePhase resolvePhase)
|
||||
{
|
||||
switch (ClassType)
|
||||
{
|
||||
case UhtClassType.Class:
|
||||
{
|
||||
MetaData.Add(UhtNames.IncludePath, HeaderFile.IncludeFilePath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
```
|
Reference in New Issue
Block a user