這個月勉勉強強才寫了一篇,都快月底了,都還沒有寫第二篇博客的沖動,證明這個月確實收獲甚少,有點狀態不佳,懶毒入骨啊。剛剛看了這個月其實已經寫了三篇,然而事實是這博客還有另外一個人也在更新文章,博主並沒有人格分裂,呵呵,好冷。。。
最近迷迷糊糊地在用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里就會有我們開始設置的鳥瞰模式和行走模式

