所以只要把 GameObject.layer 轉換成二進位格式,就能做比較了!
可以使用移位運算子<< ,配合聯集(&運算子)或交集(|運算子)來做判斷。
聯集:
public LayerMask compareLayer;private void Start()
{
if ((1 << gameObject.layer | compareLayer) == compareLayer)
{
//Do something
}
}// 0001 0000 Layer為UI,使用 << 運算子之後的結果
// 0001 1000 LayerMask勾選UI、Water
// ─────────
// 0001 1000 取聯集之後的結果
交集:
public LayerMask compareLayer;private void Start()
{
if ((1 << gameObject.layer & compareLayer) == 1 << gameObject.layer)
{
//Do something
}
}// 0001 0000 Layer為UI,使用 << 運算子之後的結果
// 0001 1000 LayerMask勾選UI、Water
// ─────────
// 0001 0000 取交集之後的結果
1 << gameObject.layer :如果 gameObject.layer 是 5(UI) 的話,結果會是 0001 0000 (二進位),相當於把 1 往左邊移動 5 格(個人理解方式…)