UE4游戏引擎编译C++代码出现错误代码:6的解决方法

在公司学习UE4下的C++代码编程时,依照《Unreal Engine4总动员》上的示例编写代码时,总是发生代码六的错误以及一些莫名其妙的错误。下图是书上示例:

这是我敲的代码:

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Foat.generated.h"

UCLASS()
class QUICKSTART_API AFoat : public AActor
{
	GENERATED_BODY()
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Damage") 
	int32 TotalDamage;
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Damage")
	float DamageTimeInSecond;
	UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Transient, Category = "Damage")
	float DamagePerSecond;
public:	
	// Sets default values for this actor's properties
	AFoat();

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

public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;
	void PostInitProperties() ;
	UFUNCTION(BlueprintCallable,Category="Damage")
	void CalculateValues();
	void PostEditChangeProperty(FPropertyChangedEvent& FPropertyChangedEvent);
};

明明已经按照书上的示例敲下来了,一摸一样,却发生了代码六错误和一些莫名其妙的错误,在公司一下午盯着书开始怀疑人生(真郁闷,明明就是一样的)

错误提示如下:

 后来经过我的慢慢思索和试验,发现当UPROPERTY()宏有一些需要暴露给蓝图进行读或者写的参数的时候(如:BlueprintReadWrite,BlueprintReadOnly等),就会发生这个错误,而没有这些参数时,系统就能编译通过。

下图为没有涉及蓝图参数的UPROPERTY()宏代码通过示例图

 那么我就开始思考,他们有什么区别,为什么UPROPERTY()加了暴露给蓝图的参数就会编译不通过,后来我终于想明白了,当这些加了暴露给蓝图参数的UPROPERTY()不能在类里设定为私有成员,因为他们会暴露给蓝图,所以设置成私有会报错(class里若没有定义,默认私有),当我们把这些带有蓝图参数的变量定义设置为public公有或者protected保护时,就不会出现问题,编译通过。

下图为带有蓝图参数的代码通过的截图。

 哈哈哈,终于找到问题所在啦,解决问题的感觉真爽!!!!!!!

如果觉得对你有帮助,请点个赞支持下(下班了,溜了溜了。)

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三少爷的剑!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值