Bluprintable NotBlueprintType EditAnywhere EditDefaultsOnly EditInstanceOnly 这几个宏的作用

创建基于UE4父类的代码

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. UCLASS()  
  2. class VR_API ALoadStreamingLevelActor : public AActor  
  3. {  
  4.     GENERATED_BODY()  
  5.       
  6. public:   
  7.     // Sets default values for this actor's properties  
  8.     ALoadStreamingLevelActor();  
  9.   
  10.     // Called when the game starts or when spawned  
  11.     virtual void BeginPlay() override;  
  12.       
  13.     // Called every frame  
  14.     virtual void Tick( float DeltaSeconds ) override;  
  15.   
  16.     UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = LoadedLevelName)  
  17.         FName LevelName;  
  18.       
  19.     UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = LoadedLevelName)  
  20.         FName PackageName;  
  21. };  

默认情况下上边的UCLASS() 宏同下图中UCLASS(Blueprintable)的作用是一样的。这样声明的类在UE4中是可以创建基于此类的蓝图子类。


如果不想让C++类能创建蓝图子类,则只需把 Blueprintable 替换为NotBlueprintable。修改代码如下

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. UCLASS(NotBlueprintable)  
  2. class VR_API ALoadStreamingLevelActor : public AActor  
  3. {  
  4.     GENERATED_BODY()  
  5.       
  6. public:   
  7.     // Sets default values for this actor's properties  
  8.     ALoadStreamingLevelActor();  
  9.   
  10.     // Called when the game starts or when spawned  
  11.     virtual void BeginPlay() override;  
  12.       
  13.     // Called every frame  
  14.     virtual void Tick( float DeltaSeconds ) override;  
  15.   
  16.     UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = LoadedLevelName)  
  17.         FName LevelName;  
  18.       
  19.     UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = LoadedLevelName)  
  20.         FName PackageName;  
  21. };  

修改编译完后,在UE4中就无法创建基于此C++的蓝图子类了




在UCLASS()宏参数中还有一个名为NotBlueprintType的宏,这个宏的意思是在蓝图中无法创建基于此c++类的变量。而基于此C++类的蓝图子类则不受此限制。

代码和效果如下

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. UCLASS(Blueprintable, NotBlueprintType)  
  2. class VR_API ALoadStreamingLevelActor : public AActor  
  3. {  
  4.     GENERATED_BODY()  
  5.       
  6. public:   
  7.     // Sets default values for this actor's properties  
  8.     ALoadStreamingLevelActor();  
  9.   
  10.     // Called when the game starts or when spawned  
  11.     virtual void BeginPlay() override;  
  12.       
  13.     // Called every frame  
  14.     virtual void Tick( float DeltaSeconds ) override;  
  15.   
  16.     UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = LoadedLevelName)  
  17.         FName LevelName;  
  18.       
  19.     UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = LoadedLevelName)  
  20.         FName PackageName;  
  21. };  

  此时ALoadStreamingLevel类是搜索不到的




EditAnyWhere:  此成员变量在蓝图编辑器中和关卡细节面板中都会被暴露出来


EditDefaultsOnly:  此成员变量只会在蓝图编辑器中被暴露出来


EditInstanceOnly:  此成员变量只会在关卡细节面板中被暴露出来


蓝图编辑器中:




拖拽到Level中:


本文转自:http://blog.csdn.net/xi_niuniu/article/details/54409648

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值