Bluprintable\NotBlueprintType
创建基于 UE4 父类的代码
UCLASS()
class VR_API ALoadStreamingLevelActor : public AActor
{
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	ALoadStreamingLevelActor();
 
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;
	
	// Called every frame
	virtual void Tick( float DeltaSeconds ) override;
 
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = LoadedLevelName)
		FName LevelName;
	
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = LoadedLevelName)
		FName PackageName;
};
默认情况下上边的 UCLASS() 宏同下图中 UCLASS(Blueprintable)的作用是一样的。这样声明的类在 UE4 中是可以创建基于此类的蓝图子类。
如果不想让 C++ 类能创建蓝图子类,则只需把 Blueprintable 替换为NotBlueprintable。修改代码如下
UCLASS(NotBlueprintable)
class VR_API ALoadStreamingLevelActor : public AActor
{
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	ALoadStreamingLevelActor();
 
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;
	
	// Called every frame
	virtual void Tick( float DeltaSeconds ) override;
 
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = LoadedLevelName)
		FName LevelName;
	
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = LoadedLevelName)
		FName PackageName;
};
修改编译完后,在 UE4 中就无法创建基于此 C++ 的蓝图子类了
在 UCLASS() 宏参数中还有一个名为 NotBlueprintType 的宏,这个宏的意思是在蓝图中无法创建基于 此 C++ 类 的变量。而基于此 C++ 类的 蓝图子类 则不受此限制。
代码和效果如下
UCLASS(Blueprintable, NotBlueprintType)
class VR_API ALoadStreamingLevelActor : public AActor
{
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	ALoadStreamingLevelActor();
 
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;
	
	// Called every frame
	virtual void Tick( float DeltaSeconds ) override;
 
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = LoadedLevelName)
		FName LevelName;
	
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = LoadedLevelName)
		FName PackageName;
};
此时 ALoadStreamingLevel 类是搜索不到的
EditAnywhere\EditDefaultsOnly\EditInstanceOnly
EditAnyWhere: 此成员变量在蓝图编辑器中和关卡细节面板中都会被暴露出来EditDefaultsOnly: 此成员变量只会在蓝图编辑器中被暴露出来EditInstanceOnly: 此成员变量只会在关卡细节面板中被暴露出来
蓝图编辑器中:
拖拽到 Level 中: