c++ - 我无法使用蓝图 (UE4) 使用 UPROPERTY(EditAnywhere) 修改在 C++ 中声明的变量
问题描述
我是 UE4 的新手,但我对 C++ 有一些基本的了解,而且我一直在开发一款 FPS 射击游戏,这对我来说有点挑战。我在这里,有一个问题对我来说仍然没有解决。
所以这是我的代码的一部分:
FPSCharacter.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;
...
};
Weapon.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 类创建的蓝图类,等待分配给这三个变量,FPSCharacter.h
它们是UWeapon* Primary
,UWeapon* Secondary
和UWeapon* Tertiary
.
如我所愿,我进入 FPSCharacter 的 Blueprint 类并将这三个变量分配给我为它们创建的 Blueprint 类。
修改这些值: https ://imgur.com/a/5TVe2t6
点击编译按钮: https ://imgur.com/a/fuauwKn
单击编译按钮后,所有这些变量都恢复为默认值。(带值无)
这有什么问题?我做错什么了吗?请帮我解决这个问题。提前致谢 ;)
解决方案
您应该将Instanced
关键字添加到武器变量的 UPROPERTY 说明符。这样,将创建一个对象的实例并将其分配给一个属性,从而正确保存
您可能还需要将EditInlineNew
UCLASS 说明符添加到您的武器类中。
FPSCharacter.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
}
推荐阅读
- css - 将图像包含到 React-Native 中的特定块中
- r - 尝试使用 Plotly 绘制线条时出现闪亮错误
- angular - 导航到相同的 url 时无法获取更新的 queryParams
- amazon-web-services - 无法选择 S3 文件夹作为 AWS 上 CodePipeline 的源
- r - RcppArmadillo.package.skeleton 创建的 NAMESPACE 选项导致错误
- asp.net - 为什么asp vb从ajax调用函数后面的代码返回404未找到
- javascript - 自动化将在文本框中键入的键盘事件
- design-patterns - 此示例中使用了哪些设计模式?
- python - 将 2 列类似计数器的 csv 文件转换为 Python 集合。计数器?
- c# - NPOI 是否支持复制工作表并将其插入到同一个工作簿中?