您的位置:首页 > 移动开发 > Unity3D

Unity中的layer和tag

2016-05-06 15:33 1361 查看

Unity中的layer和tag

layer和tag均用于标识不同类别的gameobject,侧重点不同

Layer

Unity中默认已经有8种layer,但可以自行设置layer,上限32种,对应于一个int值的32位
对于场景中的gameobject,均可以设置其layer。

用于camera

layer和camera配合起来,可以达到尽在camera上渲染特定层gameobject的效果
相机有culling mask属性,也是对应于一个32位int值,如果对应layer的bit为1,则渲染此layer到此摄像机,在inspector界面可以选择多个layer,也可以在代码中设置多个layer的mask,比如
camera.cullingMask
= 1<<10 + 1<< 5

camera的clipping planes属性有类似的作用,可限制绘制的物体距离范围,仅在范围内的将会被绘制。比如在房间中,紧贴camera的墙可以隐藏掉

用于raycast

raycast可检测一条射线与gameobject的碰撞,检测时可以定义layermask参数,从而只和这些layer的物体发生碰撞
做raycast之前,通常要生成一条射线,相应的api为
ScreenPointToRay
 从摄像机到屏幕坐标的射线
ViewportPointToRay
 从摄像机到视口坐标的射线。视口坐标是相对于相机标准化的坐标,左下角为(0,0),右上角(1,1)。视口坐标可以和世界坐标、屏幕坐标相互转换

做raycast时,定义相关layermusk
Physics.Raycast(ray,
disance, layermask)

如果没有定义layermask,则仅忽略IgnoreRaycast layer的物体

用于灯光

通过设置仅照亮特定layer

Tag

可以通过
GameObject.FindWithTay()
快速搜索到相关物体

作者Focustc,来自于CSDN
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity layer tag camera raycast