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;
}

此方法允许你检查游戏对象是否在图层掩码中(在编辑器中选择)。