Can’t save asset.
Below is C++ file:
#pragma once
include “CoreMinimal.h”
include “BehaviorTree/BlackboardData.h”
include “ZMBBData.generated.h”
/**
*
*/
UCLASS(BlueprintType)
class ZMCRE4_API UZMBBData : public UBlackboardData
{
GENERATED_BODY()
public:
UZMBBData();
};
// Fill out your copyright notice in the Description page of Project Settings.
#include "ZMBBData.h"
#include "BehaviorTree/Blackboard/BlackboardKeyType_Object.h"
#include "BehaviorTree/Blackboard/BlackboardKeyType_Bool.h"
#include "BehaviorTree/Blackboard/BlackboardKeyType_NativeEnum.h"
#include "../ZMEnums.h"
UZMBBData::UZMBBData()
{
// SelfActor - Object(Actor)
{
FBlackboardEntry Entry;
Entry.EntryName = FName("SelfActor");
UBlackboardKeyType_Object* KeyType = NewObject<UBlackboardKeyType_Object>(this, TEXT("SelfActorKeyType"));
KeyType->BaseClass = AActor::StaticClass();
Entry.KeyType = KeyType;
Keys.Add(Entry);
}
// In_Attack_Range - Bool
{
FBlackboardEntry Entry;
Entry.EntryName = FName("InAttackRange");
Entry.KeyType = NewObject<UBlackboardKeyType_Bool>(this, TEXT("InAttackRangeKeyType"));
Keys.Add(Entry);
}
// Zombie_Walking_State - Enum
{
FBlackboardEntry Entry;
Entry.EntryName = FName("ZombieMapState");
UBlackboardKeyType_NativeEnum* KeyType = NewObject<UBlackboardKeyType_NativeEnum>(this, TEXT("ZombieMapStateKeyType"));
KeyType->EnumType = StaticEnum<EZombieMapState>(); // 直接设置枚举类型
KeyType->EnumName = StaticEnum<EZombieMapState>()->GetName();
Entry.KeyType = KeyType;
Keys.Add(Entry);
}
// Dead - Bool
{
FBlackboardEntry Entry;
Entry.EntryName = FName("Dead");
Entry.KeyType = NewObject<UBlackboardKeyType_Bool>(this, TEXT("DeadKeyType"));
Keys.Add(Entry);
}
// Player_Available - Bool
{
FBlackboardEntry Entry;
Entry.EntryName = FName("PlayerAvailable");
Entry.KeyType = NewObject<UBlackboardKeyType_Bool>(this, TEXT("PlayerAvailableKeyType"));
Keys.Add(Entry);
}
}
I create BB_Zombie by Miscellaneous → Data Asset.
