Unity3D基础19:Tag标签

 

前文:https://blog.csdn.net/Jaihk662/article/details/86763790(物体查找与控制)

前面已经实现了当小方块在Door里面时,可以用按键控制物体Door的旋转,触发器的代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LRtoDoor : MonoBehaviour
{
    private Door mydoor;
    private Transform myTransform;
    private Rigidbody myRigidbody;
    void Start()
    {
        mydoor = GameObject.Find("Door").GetComponent<Door>();
        myTransform = gameObject.GetComponent<Transform>();        //获取相应对象的引用
        myRigidbody = gameObject.GetComponent<Rigidbody>();
    }
    void Update()
    {
    }
    void OnTriggerStay(Collider coll)
    {
        if (coll.gameObject.name=="Cube (3)")      //如果方块进入了Door里面
        {
            Debug.Log("触发成功,可以用ZX键控制旋转");
            mydoor.Rotate();
        }
    }
}

那么问题又来了:想要设计100个可以触发效果的物体,该怎么办呢?总不可能写100个if语句吧

 

一、Tag标签

这个时候就需要标签了,也就是给物体分类,只要是这一类的物体都可以触发

GameObject.FindGameObjectsWithTag(string):静态方法,返回一个数组,里面为所有标签为string的物体(GameObject)

触发器代码修改如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LRtoDoor : MonoBehaviour
{
    private Door mydoor;
    private GameObject[] p;
    private Transform myTransform;
    void Start()
    {
        p = GameObject.FindGameObjectsWithTag("Player");
        mydoor = GameObject.Find("Door").GetComponent<Door>();
        myTransform = gameObject.GetComponent<Transform>();

        Debug.Log("标签为Player的物体有:");
        for (int i = 0; i < p.Length; i++)
            Debug.Log(p[i].name);
    }
    void Update()
    {
    }
    void OnTriggerStay(Collider coll)
    {
        //暂时可以理解:coll.gameObject.tag和coll.tag一样,上面coll.name一样的道理
        if (coll.gameObject.tag=="Player")      //如果标签为"Player"的方块进入了Door里面
        {
            Debug.Log("触发成功,可以用ZX键控制旋转");
            mydoor.Rotate();
        }
    }
}

效果如下:

 

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值