需求:Inspector面板供编辑的Layer选择公开字段,自由选择射线可交互层。并可用判断当前物体层是否在可交互层列表中。
实现:
[Header("射线可交互层")]
public LayerMask RayLayers;
public void Awake()
{
RayLayers = Physics2D.AllLayers;//开启所有层
RayLayers &= ~(int)(1 << LayerMask.NameToLayer("Ignore Raycast"));//反选,关闭当前层
Debug.Log((RayLayers.value & (int)Mathf.Pow(2, gameObject.layer)) == (int)Mathf.Pow(2, gameObject.layer)
? "当前物体在层中"
: "当前物体不在层中");
}