62 lines
1.9 KiB
Markdown
Raw Permalink Normal View History

2024-10-12 17:19:46 +08:00
# DeprecatedNode
- **功能描述:** 用于BehaviorTreeNode或EnvQueryNode说明该类已废弃在编辑器中红色错误展示并有错误ToolTip提示
- **使用位置:** UCLASS
- **引擎模块:** DetailsPanel
- **元数据类型:** bool
- **限制类型:** BehaviorTreeNodeEnvQueryNode
- **常用程度:** ★★
在AI行为树或EQS的节点上设置标记该节点已经弃用。
## 源码中的例子:
```cpp
UCLASS(meta = (DeprecatedNode, DeprecationMessage = "Please use IsAtLocation decorator instead."), MinimalAPI)
class UBTDecorator_ReachedMoveGoal : public UBTDecorator
{
GENERATED_UCLASS_BODY()
};
UCLASS(MinimalAPI, meta=(DeprecatedNode, DeprecationMessage = "This class is now deprecated, please use RunMode supporting random results instead."))
class UEnvQueryTest_Random : public UEnvQueryTest
{
GENERATED_UCLASS_BODY()
};
```
## C++测试代码:
```cpp
UCLASS(meta = (DeprecatedNode, DeprecationMessage = "This BT node is deprecated. Don't use this anymore."), MinimalAPI)
class UBTTask_MyDeprecatedNode : public UBTTaskNode
{
GENERATED_UCLASS_BODY()
};
```
行为树里的结果如果加上DeprecatedNode就会红色显示并提示错误信息。
![Untitled](Untitled.png)
## 源码里测试的代码:
```cpp
FString FGraphNodeClassHelper::GetDeprecationMessage(const UClass* Class)
{
static FName MetaDeprecated = TEXT("DeprecatedNode");
static FName MetaDeprecatedMessage = TEXT("DeprecationMessage");
FString DefDeprecatedMessage("Please remove it!");
FString DeprecatedPrefix("DEPRECATED");
FString DeprecatedMessage;
if (Class && Class->HasAnyClassFlags(CLASS_Native) && Class->HasMetaData(MetaDeprecated))
{
DeprecatedMessage = DeprecatedPrefix + TEXT(": ");
DeprecatedMessage += Class->HasMetaData(MetaDeprecatedMessage) ? Class->GetMetaData(MetaDeprecatedMessage) : DefDeprecatedMessage;
}
return DeprecatedMessage;
}
```