unity Layer LayerMask 用法

一、unity 的Layer(層)表示

unity 用int32 表示32個Layer層 int32佔4個字節 共32位

在Unity中每個GameObject都有Layer屬性,默認的Layer都是Default。在Unity中可編輯的Layer共有24個(8—31層),官方已使用的是0—7層,默認不可編輯!

LayerMask實際上是一個位碼操作,在Unity3D中一共有32個Layer層,並且不可增加。

LayerMask

可以用來表示layer 例如

int layer = LayerMask.NameToLayer(“Ground”); //假設=10

LayerMask.GetMask((“Ground”); //相當於 1 << 10

1 << 10 打開第10的層。 等價於【1 << LayerMask.NameToLayer(“Ground”);】 也等價於【 LayerMask.GetMask((“Ground”);~(1 << 10) 打開除了第10之外的層。

~(1 << 0) 打開所有的層。

(1 << 10) | (1 << 8) 打開第10和第8的層。等價於【 LayerMask.GetMask((“Ground”, “Wall”);

總結

在代碼中使用時如何開啓某個Layers?
LayerMask mask = 1 << 你需要開啓的Layers層。
LayerMask mask = 0 << 你需要關閉的Layers層。

例如

LayerMask mask = 1 << 2; 表示開啓Layer2。

LayerMask mask = 0 << 5;表示關閉Layer5。

LayerMask mask = 1<<2|1<<8;表示開啓Layer2和Layer8。

LayerMask mask = 0<<3|0<<7;表示關閉Layer3和Layer7。

LayerMask mask = ~1<<3|1<<7;表示關閉Layer3和Layer7。

LayerMask mask = 1<<2|0<<4;表示開啓Layer2並且同時關閉Layer4.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章