我们从【是什么】【为什么】【怎么用】三个问题,来讨论游戏对象的标签。
1. 什么是标签
标签 (Tag) 是可分配给游戏对象的参考词
。例如,可为玩家控制的角色定义“Player”标签,为场景中的各种树木定义为“Tree”标签。
具体到Unity中,比如,我们新建一个游戏对象,那么,Inspector面板,开头就是个Tag的坑位。
值是Untagged,也就是没有具体标签值。
2. 为什么要有标签
标签不是必须的,它主要用于脚本,一个典型的例子是,你拿到了一个gameObject,但不知道这个是啥东西,就可以用tag来判断。
3. 怎么用标签
3.1 为游戏对象设置标签
点击旁边的小三角,有几个默认的标签,但一般咱不用,咱自己定义。也就是自己Add Tag.
出来的窗口,点击加号,就可以自定义一个Tag:
添加好了,就可以把Tag那一栏,设置为你要的标签。
3.2 在脚本代码中使用
我们以碰撞检测来说明。
假设有个脚本,绑定到了某个gameObject A,然后设置为刚体,这样另一个也是刚体的游戏对象B,位置着渐靠近这个A,会发生碰撞,脚本中,会回调一个函数,叫OnTriggerEnter2D。
void OnTriggerEnter2D(Collider2D collider)
{
if (collider.gameObject.tag.Contains("Fruit")) {
//TODO
collider.gameObject.GetComponent<Fruit>().GetStatus();
}
}
代码如上,变量collider代表碰撞了谁,可以获得gameObject,但gameObject无法判断具体类型。
怎么办,就是通过读取tag,如果tag是Fruit,那说明碰到的物体,标签是Fruit。
假设碰到的物体B,它标签设置了“Fruit”,然后绑定了一个脚本叫“Fruit”,那想调用B的脚本函数,就可以用collider.gameObject.GetComponent<Fruit>()
,后面跟上脚本的各种函数了,例如GetStatus()。