Camera.eventMask属性可以设置哪个层的物体响应鼠标事件
如果使物体响应鼠标有三个条件
1.物体在摄像机的视野范围内
2.eventMask与物体的layer进行与运算&后结果仍为物体的layer值,比如现在有两个物体,他们的layer值分别为1和3,
则当eventMask与9(因为2^0+2^3=9)进行与运算后若结果仍为9,则这两个物体都会响应鼠标事件。
3.物体的IgnoreRaycast没有被选上。
我们同样是在layer中加两个层Cube和Sphere层,分别属于第8层和第9层
创建一个立方体和一个球体,并把立方体的Layer设置为Cube,球体的设置为Sphere
我们创建CameraEventMask.cs脚本,枫别挂在球体和立方体上
脚本内容
public class CameraEventMask : MonoBehaviour {
private int cubeLayer = 8;
private int sphereLayer = 9;
/// <summary>
/// 紧立方体响应鼠标消息
/// </summary>
public void SetCameraEventMaskCubeLayer() {
Camera.main.eventMask = 1 << cubeLayer;
}
/// <summary>
/// 紧球体响应鼠标消息
/// </summary>
public void SetCameraEventMaskSphereLayer()
{
Camera.main.eventMask = 1 << sphereLayer;
}
void OnMouseDown()
{
Debug.Log(gameObject.name);
}
}
效果如下