我无法使用蓝图(UE4)修改我在C++中用UPROPERTY(EditAnywhere)声明的变量



我是UE4的新手,但我对C++有一些基本的了解,我一直在开发一款FPS射击游戏,这对我来说有点挑战。现在我遇到了一个仍然没有解决的问题。

这是我的一部分代码:

FPS字符h:

#pragma once
...
#include "Weapon.h"
#include "CoreMinimal.h"
#include "GameFramework/Character.h"
#include "FPSCharacter.generated.h"
UCLASS()
class GAME_API AFPSCharacter : public ACharacter
{
GENERATED_BODY()
public:
...

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Weapon")
UWeapon* Primary;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Weapon")
UWeapon* Secondary;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Weapon")
UWeapon* Tertiary;
...
};

武器。h(我认为在这种情况下这并不重要,但仍然如此(:

#pragma once
#include "CoreMinimal.h"
#include "Item.h"
#include "Weapon.generated.h"
UCLASS()
class GAME_API UWeapon : public UItem
{
GENERATED_BODY()
public:
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Item")
float MagSize = 30.f;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Item")
float FireRate;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Item")
float BulletRange = 100000000.f;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Item")
float BaseDamage = 35.f;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Item")
float DamageDropRate = 0.8f;
protected:
virtual void Use(class AFPSCharacter* Character) override;

};

然后,我在UWeapon类的基础上创建了一些Blueprint类,等待分配给FPSCharacter.h上的三个变量,即UWeapon* PrimaryUWeapon* SecondaryUWeapon* Tertiary

按照我的意图,我进入FPSCharacter的Blueprint类,并将这三个变量分配给我为它们创建的Blueprint类别。

修改这些值:https://i.stack.imgur.com/ZpCcc.jpg

单击编译按钮:https://i.stack.imgur.com/fXkbp.jpg

单击"编译"按钮后,所有这些变量都返回到默认值。(有值无(

这是怎么回事?我做错什么了吗?请帮我解决这个问题。提前感谢;(

您应该将Instanced关键字添加到武器变量的UPROPERTY说明符中。这样,一个对象的实例将被创建并分配给一个属性,从而正确地保存

您可能还需要将EditInlineNew作为UCLASS说明符添加到武器类中。

FPS字符.h

UCLASS()
class GAME_API AFPSCharacter : public ACharacter
{
// Other code...
UPROPERTY(Instanced, EditAnywhere, BlueprintReadWrite, Category = "Weapon")
UWeapon* Tertiary;
}

武器.h

UCLASS(EditInlineNew)
class GAME_API UWeapon : public UItem
{
// Weapon stuff
}

最新更新