2015-07-13 44 views
1

我正在尋找一種方法讓藍圖能夠訪問我將在AActor類中創建的預定義常量。將C++常量暴露給虛幻中的藍圖

我基本上希望他們保持我的代碼清潔在我的藍圖中。例如,在嚴格的代碼,我可以用預處理宏這樣的:後來

const int kDirectionUp = 0; 
const int kDirectionDown = 1; 

然後,而不必記住一個號碼(:

#define kDirectionUp 0 
#define kDirectionDown 1 

或者,我可以只使用常數0..3)以及他們都指,我只需鍵入

doSomething(kDirectionUp); 

這不是爲這個特定的範圍內一個巨大的交易,但我有其他人有大約8個不同的數字,都代表differen t值。在藍圖中處理會很痛苦,更不用說難以調試,而且任何其他程序員都難以知道每個這些神祕數字的含義。

我想在藍圖中複製此行爲,以便我可以在某些地方插入常量,而不必記住12個左右的整數鍵值列表。


這個想法是他們是靜態的,所以UPROPERTYs不會在這裏工作(據我所知)。

我到目前爲止唯一的想法是爲每個常量創建函數,我可以稱之爲簡單地返回有問題的數字,但這不是最好的解決方案,更不用說他們還需要某種參數,在這種情況下只需要假人。這很醜陋。

有沒有什麼辦法可以讓我在Unreal中將常量值暴露給Blueprints?在這種情況下,它們都將是整數,但適用於其他數據類型的解決方案是非常感謝

回答

0

在做了更多的挖掘之後,我發現虛幻藍圖支持枚舉!

這似乎爲我工作。不得不通過篩選將整數轉換爲枚舉值並不理想,但它比必須有一系列分支語句檢查整數值要乾淨得多。

UENUM(BlueprintType) 
enum class EDirection : uint8 
{ 
    D_Up = 0 UMETA(DisplayName = "Up"), 
    D_Right = 1 UMETA(DisplayName = "Right"), 
    D_Down = 2 UMETA(DisplayName = "Down"), 
    D_Left = 3 UMETA(DisplayName = "Left") 
};