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,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 被隐藏了。
![Untitled](Untitled.png)
## 原理:
原理比较简单就是坚持元数据标记然后设置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