Unity 为游戏对象设置标签

我们从【是什么】【为什么】【怎么用】三个问题,来讨论游戏对象的标签。

1. 什么是标签

标签 (Tag) 是可分配给游戏对象参考词。例如,可为玩家控制的角色定义“Player”标签,为场景中的各种树木定义为“Tree”标签。

具体到Unity中,比如,我们新建一个游戏对象,那么,Inspector面板,开头就是个Tag的坑位。
Unity 为游戏对象设置标签
值是Untagged,也就是没有具体标签值。

2. 为什么要有标签

标签不是必须的,它主要用于脚本,一个典型的例子是,你拿到了一个gameObject,但不知道这个是啥东西,就可以用tag来判断。

3. 怎么用标签

3.1 为游戏对象设置标签

点击旁边的小三角,有几个默认的标签,但一般咱不用,咱自己定义。也就是自己Add Tag.
Unity 为游戏对象设置标签
出来的窗口,点击加号,就可以自定义一个Tag:
Unity 为游戏对象设置标签
添加好了,就可以把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()。

上一篇:八大行星demo


下一篇:Unity程序基础框架(二)对象池