【UE4笔记】使用UPROPERTY将蓝图变量改为C++变量《将蓝图转化为C++》 官方视频教程笔记

变量改写步骤

  1. 在C++类头文件中创建同名同类型的变量

  2. 在变量名之前使用UPROPERTY设置访问修饰符
    UE4支持的访问修饰符及其含义参见下文

  3. 编译代码后,将蓝图中原来的变量删去。(VS中编译热键Shift+Ctrl+B

    到蓝图中查看发现原来蓝图中的变量被自动改名了。如原来的MaxNum被改成了MaxNum_0。原因是编译代码后检测到了变量名冲突。

    为了使用C++中的变量,我们需要手动删除蓝图中原有的变量, 在此之前,需要先将用到这个变量的地方手动替换成c++中的变量
    右键单击蓝图变量-》查找引用-》对每个引用进行手动替换(在事件图标中删除该变量,右键输入变量名选择不带_0的变量即可)
    在这里插入图片描述

访问修饰符

在这里插入图片描述
访问修饰符是在C++代码中声明的,给予编辑器的访问权限。

如何选择需要的访问修饰符:

  1. 判断需要的编辑器读写性:
    给编辑器的访问权限是只可读(RredOnly)还是可读写(ReadWrite)

  2. 判断这个变量需要在什么时候使用:

    在默认值(Defaults),实例(Instance)还是蓝图(Blueprint)中使用。

    Defaults默认值指的是,在蓝图细节面板中看到的C++中设置的初始值。

    Instance实例指的是蓝图拖放到关卡中以后的那一个实例。

    若只填写了VisibleDefaultsOnly则只能在细节面板中看到这个变量的值,不能修改。关卡中的实例看不见这个值。该值是在C++中声明的时候写的。

  3. 选择访问修饰符,填入UPROPERTY()后面的括号中:

protected:
	UPROPERTY(EditAnywhere, BlueprintReadOnly)
	float MaxGrabDistance = 100.0f;

最常用的访问修饰符是EditAnywhere和VisibleAnywhere。前者可在蓝图的细节面板和实例的细节面板中修改值,后者是只读。

此外,若该值需要在蓝图的事件图表或函数中使用的话,还要添加BlueprintReadOnly或者BlueprintReadWrite。

完整头文件:Grab.h

#pragma once

#include "CoreMinimal.h"
#include "Components/SceneComponent.h"
#include "Grabber.generated.h"


UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent), Blueprintable )
class BLUEPRINTSTOCPP_API UGrabber : public USceneComponent
{
	GENERATED_BODY()

public:	
	// Sets default values for this component's properties
	UGrabber();

protected:
	// Called when the game starts
	virtual void BeginPlay() override;

public:	
	// Called every frame
	virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;

protected:
	UPROPERTY(EditAnywhere, BlueprintReadOnly)
	float MaxGrabDistance = 100.0f;
};

扩展:属性系统的继承树

在这里插入图片描述
图片源自UnrealBlog——Reflection

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值