声明:此篇文章是个人学习笔记,并非教程,所以内容可能不够严谨。可作参考,但不保证绝对正确。如果你发现我的文章有什么错误,非常欢迎指正,谢谢哦。
此篇文章是根据官网手册总结:https://docs.unity3d.com/cn/current/Manual/class-TagManager.html
Unity中所有游戏物体在Inspector面板上都能看到两个属性:标签(Tag)和层(Layer)。这二者都是用来对游戏物体进行分类的,但是作用有所区别。
标签(Tag)
标签(tag)是用来对游戏物体进行分类的,从而更加方便的在代码中对某一类物体进行统一操作。
常用函数
函数名 | 功能 |
---|---|
GameObject.FindWithTag() | 查找场景中指定标签的物体,但是当场景中有多个同样标签的物体时,无法保证返回的是哪一个。同时也找不到未激活(active)的物体。 |
GameObject.FindGameObjectWithTag() | 功能和上面FindWithTag完全一样,只是名字不同 |
GameObject.FindGameObjectsWithTag() | 返回场景中指定标签的所有物体 |
任意组件.tag | 返回组件对应游戏物体的标签tag |
层(Layer)
层(Layer)也是用来对游戏物体进行分类的,但它是为了渲染和碰撞进行分类。主要用途:
1.让摄像机只渲染某些层的物体,对另一些层的物体不渲染(即不显示)
2.让光源只照亮对某些层的物体,而对另一些曾的物体不影响。
3.供射线投射用于选择性地忽略碰撞体或创建碰撞。
常用函数
函数名 | 功能 |
---|---|
Physics.Raycast() | 发射射线,检测碰撞。其中有一个参数可以选择射线可以与哪些层的物体发生碰撞检测 |
collider2D.IsTouchingLayers() | collider是一个2D碰撞体,此函数判断此2D碰撞体是否与指定层上的物体接触 |
gameObject.layer | 获取该游戏物体对应的层 |
设置层与层之间能否碰撞
在Edit–>Project Settings–>Physics中,可以看到这么一项:
它是用来设置层与层之间能否发生碰撞的。如果把√去掉,就表示行和列分别对应的两个层不会发生碰撞。