[UE4++] BitMask 使用介紹

 

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

先讓我們來看下圖:

image

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

 

 

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

其中

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

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

dorgon

dorgon

職業:LV3遊戲軟體工程師 為了追尋小時候玩遊戲的感動,而一頭栽入遊戲業界。 本來以撰寫遊戲劇本為主要志向,但回過神來才發現已經踏入程序猿的不歸路。 專長為client端跨平台遊戲開發架構與自動建置流程,主要使用引擎為cocos2d-x與UnrealEngine4。

More Posts - Website

Follow Me:
FacebookLinkedIn

有什麼想法嗎?請發表你的看法