UE4使用C++創建枚舉變量適用於C++與藍圖


這個月勉勉強強才寫了一篇,都快月底了,都還沒有寫第二篇博客的沖動,證明這個月確實收獲甚少,有點狀態不佳,懶毒入骨啊。剛剛看了這個月其實已經寫了三篇,然而事實是這博客還有另外一個人也在更新文章,博主並沒有人格分裂,呵呵,好冷。。。

最近迷迷糊糊地在用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里就會有我們開始設置的鳥瞰模式和行走模式




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM