位運算符和unity Layers

按位運算符:與(&)、非(~)、或(|)、異或(^)、<<(左移)、>>(右移)。位運算符主要用來對二進制位進行操做。
邏輯運算符:&&、||、!。邏輯運算符把語句鏈接成更復雜的複雜語句。
 
與運算符:只有兩個位都是1,結果纔是1;
或運算符:只要兩個位有一個是1,結果就是1;
非運算符:若是位爲0,結果是1,若是位爲1,結果是0;
異或運算符:兩個操做數的位中,相同則結果爲0,不一樣則結果爲1;
左移運算符<<:左移表示乘以2,左移多少位表示乘以2的幾回冪;
右移運算符>>:移動多少位表示除以2的幾回冪。
 
Unity是用 int32來表示32個Layer層,int32用二進制來表示一共有32位。
0000 0000 0000 0000 0000 0000 0000 0000
31                    0
 
eg:
(1)LayerMask mask = 1<<2; ----開啓Layer2
其中 <<左邊的 1表示有[開啓],0表示沒有該layer[忽略] 。右邊的2表示左移2位便是 layer2層的位置。
(2)LayerMask mask = 1 << 0 | 1 << 2;; ----開啓layer 0和layer 2
(3)LayerMask mask = 1 << 0 | 0 << 2 ----開啓Layer0 並關閉 Layer2
(4)打開Npc層,變1 或 運算符
camera.cullingMask |= 1 << LayerMask.NameToLayer("Npc"); camera.cullingMask = (int) 1<<LayerMask.NameToLayer("Npc");//寫法二
(5)關閉Npc層,變0 按位與 & 按位取反 ~
camera.cullingMask &= ~(1 << LayerMask.NameToLayer("Npc"));
(6)開關Npc層,按位異或 ^
camera.cullingMask ^= 1 << LayerMask.NameToLayer("Npc");
相關文章
相關標籤/搜索