[UE4++] BitMask 使用介紹

posted in: C/C++程式設計, UnrealEngine | 0

 

BitMask是使用bit來表達True或false的概念,它可以使用一個int來表達多組的功能是否啟用。

先讓我們來看下圖:

image

若我們想要依照PlayerLevel跟Speed來進行排序的話,一般不知道這個技巧的人可能會使用二個int來處理這件事。在使用了BitMask之後我們就可以藉由將第一跟第三個bit設為1來表達這件事。在一般的C++中我們常常在enum的設定中就直接將該bit位移,如下面的code:

https://gist.github.com/dorgonman/5c45efee5766a481c4db0d2f059eeed2

 

 

但在UE4中的Bitmask沒辦法使用跟上面一樣的做法,由於enum class被限制成只能使用uint8,因此在UE4中是直接將enum中的值當成位移數,如下面的code:

https://gist.github.com/dorgonman/2fcb2068fdd4d044ebba7f8e5e299870

其中

int32 bitFlag = static_cast<int32>((1 << (int32)EHorizonPlayerSortType::Level) |
(1 << (INT32)EHorizonPlayerSortType::Speed));

就是模擬Blueprint中選擇要啟用哪個enum的C++實作。

Leave a Reply

Your email address will not be published. Required fields are marked *