vault backup: 2024-10-12 17:19:45
This commit is contained in:
@@ -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;
|
||||
}
|
||||
```
|
||||
|
||||
## 示例效果:
|
||||
|
||||
可见改变了名称。
|
||||
|
||||

|
Binary file not shown.
After Width: | Height: | Size: 25 KiB |
@@ -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.")
|
||||
};
|
||||
```
|
@@ -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 |
@@ -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;
|
||||
};
|
||||
```
|
||||
|
||||
## 测试效果:
|
||||
|
||||

|
||||
|
||||
但是蓝图里访问:
|
||||
|
||||

|
||||
|
||||
## 原理:
|
||||
|
||||
在属性细节面板里生成枚举可能的值的时候,会判断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 |
@@ -0,0 +1,16 @@
|
||||
# Spacer
|
||||
|
||||
- **功能描述:** 隐藏UENUM的某个值
|
||||
- **使用位置:** UENUM::UMETA
|
||||
- **引擎模块:** Enum Property
|
||||
- **元数据类型:** bool
|
||||
- **限制类型:** UENUM
|
||||
- **常用程度:** ★★★★★
|
||||
|
||||
Spacer和Hidden的功能大体是一致的。唯一区别是Spacer在蓝图里==的时候还是会显示出来。
|
||||
|
||||
因此还是建议如果要隐藏枚举值,还是要尽量都用Hidden。
|
||||
|
||||

|
||||
|
||||
其他示例代码见Hidden
|
@@ -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");
|
||||
}
|
||||
```
|
Reference in New Issue
Block a user