vault backup: 2024-10-12 17:19:45

This commit is contained in:
2024-10-12 17:19:46 +08:00
parent ff94ddca61
commit 244c0c52f6
960 changed files with 31348 additions and 10 deletions

View File

@@ -0,0 +1,52 @@
# DisplayName
- **功能描述:** 改变枚举值的显示名称
- **使用位置:** UENUM::UMETA
- **引擎模块:** Enum Property
- **元数据类型:** string="abc"
- **常用程度:** ★★★★★
改变枚举值的显示名称
## 示例代码:
```cpp
/*
[enum 602d0d4e680 EMyEnum_HasDisplayName Enum->Field->Object /Script/Insider.EMyEnum_HasDisplayName]
(BlueprintType = true, First.DisplayName = Dog, First.Name = EMyEnum_HasDisplayName::First, IsBlueprintBase = true, ModuleRelativePath = Enum/MyEnum_Test.h, Second.DisplayName = Cat, Second.Name = EMyEnum_HasDisplayName::Second, Third.DisplayName = Pig, Third.Name = EMyEnum_HasDisplayName::Third)
ObjectFlags: RF_Public | RF_Transient
Outer: Package /Script/Insider
EnumFlags: None
EnumDisplayNameFn: 0
CppType: EMyEnum_HasDisplayName
CppForm: EnumClass
{
First = 0,
Second = 1,
Third = 2,
EMyEnum_MAX = 3
};
*/
UENUM(Blueprintable)
enum class EMyEnum_HasDisplayName :uint8
{
First UMETA(DisplayName="Dog"),
Second UMETA(DisplayName="Cat"),
Third UMETA(DisplayName="Pig"),
};
UCLASS(BlueprintType)
class INSIDER_API UMyEnum_Test :public UObject
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere,BlueprintReadWrite)
EMyEnum_HasDisplayName MyEnum_HasDisplayName;
}
```
## 示例效果:
可见改变了名称。
![image](image.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -0,0 +1,19 @@
# DisplayValue
- **功能描述:** Enum /Script/Engine.AnimPhysCollisionType
- **使用位置:** UENUM::UMETA
- **引擎模块:** Enum Property
- **常用程度:** 0
## 源码例子:
```cpp
UENUM()
enum class AnimPhysCollisionType : uint8
{
CoM UMETA(DisplayName="CoM", DisplayValue="CoM", ToolTip="Only limit the center of mass from crossing planes."),
CustomSphere UMETA(ToolTip="Use the specified sphere radius to collide with planes."),
InnerSphere UMETA(ToolTip="Use the largest sphere that fits entirely within the body extents to collide with planes."),
OuterSphere UMETA(ToolTip="Use the smallest sphere that wholely contains the body extents to collide with planes.")
};
```

View File

@@ -0,0 +1,82 @@
# Grouping
- **功能描述:** Enum /Script/Engine.EAlphaBlendOption
- **使用位置:** UENUM::UMETA
- **引擎模块:** Enum Property
- **元数据类型:** bool
- **常用程度:** 0
感觉是用在Sequencer里面的只用在SEasingFunctionGridWidget里面。
## 源码例子:
```cpp
UENUM()
enum class EAlphaBlendOption : uint8
{
Linear = 0 UMETA(Grouping = Linear, DisplayName = "Linear", ToolTip = "Linear interpolation"),
Cubic UMETA(Grouping = Cubic, DisplayName = "Cubic In", ToolTip = "Cubic-in interpolation"),
HermiteCubic UMETA(Grouping = Cubic, DisplayName = "Hermite-Cubic InOut", ToolTip = "Hermite-Cubic"),
Sinusoidal UMETA(Grouping = Sinusoidal, DisplayName = "Sinusoidal", ToolTip = "Sinusoidal interpolation"),
QuadraticInOut UMETA(Grouping = Quadratic, DisplayName = "Quadratic InOut", ToolTip = "Quadratic in-out interpolation"),
CubicInOut UMETA(Grouping = Cubic, DisplayName = "Cubic InOut", ToolTip = "Cubic in-out interpolation"),
QuarticInOut UMETA(Grouping = Quartic, DisplayName = "Quartic InOut", ToolTip = "Quartic in-out interpolation"),
QuinticInOut UMETA(Grouping = Quintic, DisplayName = "Quintic InOut", ToolTip = "Quintic in-out interpolation"),
CircularIn UMETA(Grouping = Circular, DisplayName = "Circular In", ToolTip = "Circular-in interpolation"),
CircularOut UMETA(Grouping = Circular, DisplayName = "Circular Out", ToolTip = "Circular-out interpolation"),
CircularInOut UMETA(Grouping = Circular, DisplayName = "Circular InOut", ToolTip = "Circular in-out interpolation"),
ExpIn UMETA(Grouping = Exponential, DisplayName = "Exponential In", ToolTip = "Exponential-in interpolation"),
ExpOut UMETA(Grouping = Exponential, DisplayName = "Exponential Out", ToolTip = "Exponential-Out interpolation"),
ExpInOut UMETA(Grouping = Exponential, DisplayName = "Exponential InOut", ToolTip = "Exponential in-out interpolation"),
Custom UMETA(Grouping = Custom, DisplayName = "Custom", ToolTip = "Custom interpolation, will use custom curve inside an FAlphaBlend or linear if none has been set"),
};
UENUM()
enum class EMovieSceneBuiltInEasing : uint8
{
// Linear easing
Linear UMETA(Grouping=Linear,DisplayName="Linear"),
// Sinusoidal easing
SinIn UMETA(Grouping=Sinusoidal,DisplayName="Sinusoidal In"), SinOut UMETA(Grouping=Sinusoidal,DisplayName="Sinusoidal Out"), SinInOut UMETA(Grouping=Sinusoidal,DisplayName="Sinusoidal InOut"),
// Quadratic easing
QuadIn UMETA(Grouping=Quadratic,DisplayName="Quadratic In"), QuadOut UMETA(Grouping=Quadratic,DisplayName="Quadratic Out"), QuadInOut UMETA(Grouping=Quadratic,DisplayName="Quadratic InOut"),
// Cubic easing
Cubic UMETA(Grouping = Cubic, DisplayName = "Cubic"), CubicIn UMETA(Grouping=Cubic,DisplayName="Cubic In"), CubicOut UMETA(Grouping=Cubic,DisplayName="Cubic Out"), CubicInOut UMETA(Grouping=Cubic,DisplayName="Cubic InOut"), HermiteCubicInOut UMETA(Grouping = Cubic, DisplayName = "Hermite-Cubic InOut"),
// Quartic easing
QuartIn UMETA(Grouping=Quartic,DisplayName="Quartic In"), QuartOut UMETA(Grouping=Quartic,DisplayName="Quartic Out"), QuartInOut UMETA(Grouping=Quartic,DisplayName="Quartic InOut"),
// Quintic easing
QuintIn UMETA(Grouping=Quintic,DisplayName="Quintic In"), QuintOut UMETA(Grouping=Quintic,DisplayName="Quintic Out"), QuintInOut UMETA(Grouping=Quintic,DisplayName="Quintic InOut"),
// Exponential easing
ExpoIn UMETA(Grouping=Exponential,DisplayName="Exponential In"), ExpoOut UMETA(Grouping=Exponential,DisplayName="Exponential Out"), ExpoInOut UMETA(Grouping=Exponential,DisplayName="Exponential InOut"),
// Circular easing
CircIn UMETA(Grouping=Circular,DisplayName="Circular In"), CircOut UMETA(Grouping=Circular,DisplayName="Circular Out"), CircInOut UMETA(Grouping=Circular,DisplayName="Circular InOut"),
// Custom
Custom UMETA(Grouping = Custom, DisplayName = "Custom"),
};
```
## 原理:
```cpp
TArray<SEasingFunctionGridWidget::FGroup> SEasingFunctionGridWidget::ConstructGroups(const TSet<EMovieSceneBuiltInEasing>& FilterExclude)
{
const UEnum* EasingEnum = StaticEnum<EMovieSceneBuiltInEasing>();
check(EasingEnum)
TArray<FGroup> Groups;
for (int32 NameIndex = 0; NameIndex < EasingEnum->NumEnums() - 1; ++NameIndex)
{
const FString& Grouping = EasingEnum->GetMetaData(TEXT("Grouping"), NameIndex);
EMovieSceneBuiltInEasing Value = (EMovieSceneBuiltInEasing)EasingEnum->GetValueByIndex(NameIndex);
if (FilterExclude.IsEmpty() || FilterExclude.Find(Value) == nullptr)
{
FindOrAddGroup(Groups, Grouping).Values.Add(Value);
}
}
return Groups;
}
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

View File

@@ -0,0 +1,84 @@
# Hidden
- **功能描述:** 隐藏UENUM的某个值
- **使用位置:** UENUM::UMETA
- **引擎模块:** Enum Property
- **元数据类型:** bool
- **限制类型:** UENUM的值
- **常用程度:** ★★★★★
隐藏UENUM的某个值。
## 测试代码:
```cpp
UENUM(Blueprintable,BlueprintType)
enum class EMyEnum_Spacer_Hidden :uint8
{
MyNormal,
MySpacer UMETA(Spacer),
MyHidden UMETA(Hidden),
};
UCLASS(BlueprintType)
class INSIDER_API UMyEnum_Test :public UObject
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere,BlueprintReadWrite)
EMyEnum_Spacer_Hidden MyEnum_Spacer_Hidden;
};
```
## 测试效果:
![Untitled](5b4de771-be09-4342-8955-dc0f824ef97d.png)
但是蓝图里访问:
![Untitled](Untitled.png)
## 原理:
在属性细节面板里生成枚举可能的值的时候会判断Hidden和Spacer选项来隐藏。
但是在SEnumComboBox和SGraphPinEnum这种在蓝图里显示的时候只会判断Hidden而没有忘了判断Spacer因此MySpacer是依然会被显示出来。
```cpp
bool FPropertyHandleBase::GeneratePossibleValues(TArray<FString>& OutOptionStrings, TArray< FText >& OutToolTips, TArray<bool>& OutRestrictedItems, TArray<FText>* OutDisplayNames)
{
// Ignore hidden enums
bool bShouldBeHidden = Enum->HasMetaData(TEXT("Hidden"), EnumIndex ) || Enum->HasMetaData(TEXT("Spacer"), EnumIndex );
if (!bShouldBeHidden)
{
if(ValidEnumValues.Num() > 0)
{
bShouldBeHidden = !ValidEnumValues.Contains(Enum->GetNameByIndex(EnumIndex));
}
// If both are specified, InvalidEnumValues takes precedence
else if(InvalidEnumValues.Num() > 0)
{
bShouldBeHidden = InvalidEnumValues.Contains(Enum->GetNameByIndex(EnumIndex));
}
}
}
void SEnumComboBox::Construct(const FArguments& InArgs, const UEnum* InEnum)
{
if (Enum->HasMetaData(TEXT("Hidden"), Index) == false)
{
VisibleEnums.Emplace(Index, Enum->GetValueByIndex(Index), Enum->GetDisplayNameTextByIndex(Index), Enum->GetToolTipTextByIndex(Index));
}
}
void SGraphPinEnum::GenerateComboBoxIndexes( TArray< TSharedPtr<int32> >& OutComboBoxIndexes )
{
// Ignore hidden enum values
if( !EnumPtr->HasMetaData(TEXT("Hidden"), EnumIndex ) )
{
TSharedPtr<int32> EnumIdxPtr(new int32(EnumIndex));
OutComboBoxIndexes.Add(EnumIdxPtr);
}
}
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View File

@@ -0,0 +1,16 @@
# Spacer
- **功能描述:** 隐藏UENUM的某个值
- **使用位置:** UENUM::UMETA
- **引擎模块:** Enum Property
- **元数据类型:** bool
- **限制类型:** UENUM
- **常用程度:** ★★★★★
Spacer和Hidden的功能大体是一致的。唯一区别是Spacer在蓝图里==的时候还是会显示出来。
因此还是建议如果要隐藏枚举值还是要尽量都用Hidden。
![Untitled](Hidden/Untitled.png)
其他示例代码见Hidden

View File

@@ -0,0 +1,72 @@
# TraceQuery
- **功能描述:** Enum /Script/Engine.ECollisionChannel
- **使用位置:** UENUM::UMETA
- **引擎模块:** Enum Property
- **元数据类型:** bool
- **常用程度:** 0
只在ECollisionChannel 上使用指定哪些通道是用来Trace的。
## 源码例子:
```cpp
UENUM(BlueprintType)
enum ECollisionChannel : int
{
ECC_WorldStatic UMETA(DisplayName="WorldStatic"),
ECC_WorldDynamic UMETA(DisplayName="WorldDynamic"),
ECC_Pawn UMETA(DisplayName="Pawn"),
ECC_Visibility UMETA(DisplayName="Visibility" , TraceQuery="1"),
ECC_Camera UMETA(DisplayName="Camera" , TraceQuery="1"),
ECC_PhysicsBody UMETA(DisplayName="PhysicsBody"),
ECC_Vehicle UMETA(DisplayName="Vehicle"),
ECC_Destructible UMETA(DisplayName="Destructible"),
/** Reserved for gizmo collision */
ECC_EngineTraceChannel1 UMETA(Hidden),
ECC_EngineTraceChannel2 UMETA(Hidden),
ECC_EngineTraceChannel3 UMETA(Hidden),
ECC_EngineTraceChannel4 UMETA(Hidden),
ECC_EngineTraceChannel5 UMETA(Hidden),
ECC_EngineTraceChannel6 UMETA(Hidden),
ECC_GameTraceChannel1 UMETA(Hidden),
ECC_GameTraceChannel2 UMETA(Hidden),
ECC_GameTraceChannel3 UMETA(Hidden),
ECC_GameTraceChannel4 UMETA(Hidden),
ECC_GameTraceChannel5 UMETA(Hidden),
ECC_GameTraceChannel6 UMETA(Hidden),
ECC_GameTraceChannel7 UMETA(Hidden),
ECC_GameTraceChannel8 UMETA(Hidden),
ECC_GameTraceChannel9 UMETA(Hidden),
ECC_GameTraceChannel10 UMETA(Hidden),
ECC_GameTraceChannel11 UMETA(Hidden),
ECC_GameTraceChannel12 UMETA(Hidden),
ECC_GameTraceChannel13 UMETA(Hidden),
ECC_GameTraceChannel14 UMETA(Hidden),
ECC_GameTraceChannel15 UMETA(Hidden),
ECC_GameTraceChannel16 UMETA(Hidden),
ECC_GameTraceChannel17 UMETA(Hidden),
ECC_GameTraceChannel18 UMETA(Hidden),
/** Add new serializeable channels above here (i.e. entries that exist in FCollisionResponseContainer) */
/** Add only nonserialized/transient flags below */
// NOTE!!!! THESE ARE BEING DEPRECATED BUT STILL THERE FOR BLUEPRINT. PLEASE DO NOT USE THEM IN CODE
ECC_OverlapAll_Deprecated UMETA(Hidden),
ECC_MAX,
};
```
## 原理:
```cpp
void UCollisionProfile::LoadProfileConfig(bool bForceInit)
{
static const FString TraceType = TEXT("TraceQuery");
}
```