LayerMask 結構

LayerMask 結構是一個介面,其功能幾乎就像將一個整數傳遞給相關函式一樣。但是,它的最大好處是允許使用者從檢查器的下拉選單中選擇有問題的圖層。

using UnityEngine;
class LayerMaskExample{

    public LayerMask mask;
    public Vector3 direction;

    void Start()
    {
        if(Physics.Raycast(transform.position, direction, 35f, mask))
        {
            Debug.Log("Raycast hit");
        }
    {
}

它還具有多個靜態函式,允許將圖層名稱轉換為索引或索引到圖層名稱。

using UnityEngine;
class NameToLayerExample{

    void Start()
    {
        int layerindex = LayerMask.NameToLayer("Obstacle");
    {
}

為了使層檢查容易定義以下擴充套件方法。

public static bool IsInLayerMask(this GameObject @object, LayerMask layerMask)
{
    bool result = (1 << @object.layer & layerMask) == 0;

    return result;
}

此方法允許你檢查遊戲物件是否在圖層掩碼中(在編輯器中選擇)。