vault backup: 2024-10-12 17:19:45
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
# HiddenNode
|
||||
|
||||
- **功能描述:** 把指定的UBTNode隐藏不在右键菜单中显示。
|
||||
- **使用位置:** UCLASS
|
||||
- **引擎模块:** Blueprint
|
||||
- **元数据类型:** bool
|
||||
- **限制类型:** UBTNode
|
||||
- **常用程度:** ★
|
||||
|
||||
把指定的UBTNode隐藏不在右键菜单中显示。
|
||||
|
||||
## 测试代码:
|
||||
|
||||
```cpp
|
||||
|
||||
UCLASS(MinimalAPI,meta = ())
|
||||
class UMyBT_NotHiddenNode : public UBTDecorator
|
||||
{
|
||||
GENERATED_UCLASS_BODY()
|
||||
|
||||
UPROPERTY(Category = Node, EditAnywhere)
|
||||
float MyFloat;
|
||||
};
|
||||
|
||||
UCLASS(MinimalAPI,meta = (HiddenNode))
|
||||
class UMyBT_HiddenNode : public UBTDecorator
|
||||
{
|
||||
GENERATED_UCLASS_BODY()
|
||||
|
||||
UPROPERTY(Category = Node, EditAnywhere)
|
||||
float MyFloat;
|
||||
};
|
||||
|
||||
```
|
||||
|
||||
## 测试结果:
|
||||
|
||||
可见只有UMyBT_NotHiddenNode 显示了出来,而UMyBT_HiddenNode 被隐藏了。
|
||||
|
||||

|
||||
|
||||
## 原理:
|
||||
|
||||
原理比较简单,就是坚持元数据标记,然后设置bIsHidden 。
|
||||
|
||||
```cpp
|
||||
bool FGraphNodeClassHelper::IsHidingClass(UClass* Class)
|
||||
{
|
||||
static FName MetaHideInEditor = TEXT("HiddenNode");
|
||||
|
||||
return
|
||||
Class &&
|
||||
((Class->HasAnyClassFlags(CLASS_Native) && Class->HasMetaData(MetaHideInEditor))
|
||||
|| ForcedHiddenClasses.Contains(Class));
|
||||
}
|
||||
|
||||
//D:\github\UnrealEngine\Engine\Source\Editor\AIGraph\Private\AIGraphTypes.cpp
|
||||
void FGraphNodeClassHelper::BuildClassGraph()
|
||||
{
|
||||
for (TObjectIterator<UClass> It; It; ++It)
|
||||
{
|
||||
UClass* TestClass = *It;
|
||||
if (TestClass->HasAnyClassFlags(CLASS_Native) && TestClass->IsChildOf(RootNodeClass))
|
||||
{
|
||||
|
||||
NewData.bIsHidden = IsHidingClass(TestClass);
|
||||
|
||||
NewNode->Data = NewData;
|
||||
|
||||
if (TestClass == RootNodeClass)
|
||||
{
|
||||
RootNode = NewNode;
|
||||
}
|
||||
|
||||
NodeList.Add(NewNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
Binary file not shown.
After Width: | Height: | Size: 130 KiB |
Reference in New Issue
Block a user