Unity位運算符和Layers

原文:https://www.cnblogs.com/leeplogs/p/9133824.html

按位運算符:與(&)、非(~)、或(|)、異或(^)、<<(左移)、>>(右移)。位運算符主要用來對二進制位進行操作。

邏輯運算符:&&、||、!。邏輯運算符把語句連接成更復雜的複雜語句。

 

與運算符:只有兩個位都是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");

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章