您的位置:首页 > 编程语言 > C语言/C++

UE4使用C++创建枚举变量适用于C++与蓝图

2016-08-24 11:03 465 查看
这个月勉勉强强才写了一篇,都快月底了,都还没有写第二篇博客的冲动,证明这个月确实收获甚少,有点状态不佳,懒毒入骨啊。刚刚看了这个月其实已经写了三篇,然而事实是这博客还有另外一个人也在更新文章,博主并没有人格分裂,呵呵,好冷。。。

最近迷迷糊糊地在用UE4写一些功能,本来也没在意一个简单的枚举变量有多麻烦,然后自己确实也因为这个东西打断一点工作时间。

如果只是在C++中使用的话,都还没什么问题,跟平常的定义一样就行,如果要在蓝图中使用的话,需要用UPROPERTY标记他可在蓝图中编辑调用,然后,他却提醒我需声明类型为UENUM/USTRUCT/等确定类型,好吧,一步一步跟着报错提示来...我也不挨着写了,看看实现的具体代码,其实很简单

1.在.h文件中声明enum,并在class里声明一个enum的变量

#pragma once

#include "GameFramework/PlayerController.h"
#include "MyPlayerController.generated.h"

//需要标记枚举,并设置蓝图类型
UENUM(BlueprintType)
enum class ControllerState:uint8 //设置uint8类型
{
E_SCAN UMETA(DisplayName = "鸟瞰模式"),//想要显示中文 需要将编码格式设置为utf-8
E_WALK UMETA(DisplayName = "行走模式"),//DisPlayName表示显示的名称,在蓝图中可见
};

/**
*
*/
UCLASS()
class MYPROJECT_API AMyPlayerController : public APlayerController
{
GENERATED_BODY()

public:
AMyPlayerController();
/** 控制状态的变量 */
UPROPERTY(EditAnywhere,BlueprintReadWrite,Category=Controller)
ControllerState CtrlState;
};


2.在C++中调用枚举变量,这里是构造函数中设置了一个初始值

#include "MyProject.h"
#include "MyPlayerController.h"

AMyPlayerController::AMyPlayerController()
{
CtrlState = ControllerState::E_SCAN;
}


3.在蓝图中调用枚举变量,CtrlState里就会有我们开始设置的鸟瞰模式和行走模式

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: