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