为什么要加.gameObject_unity脚本API

标题是什么意思?

也许标题有点难以理解,现在先解释一下标题所表达的意思。

请添加图片描述

首先举个简单的例子,在Unity开发中我们都用过触发器检测OnTrigger,它有个形参other(暂且先不说参数类型),我们可以用这个参数获取碰撞对象的标签,然后进行判断进行下一步的操作。但是如果在别的地方获取游戏对象标签会看到另一种方法,也就是获取标签的时候就会看到两个版本:

void OnTrigger(Collider other){   //忽略参数类型
	//版本一
	other.gameObject.tag
	
}
//版本二
other.tag

此时就会有疑问了,为什么会在中间加个.gameObject呢?没错,这就是这个标题所表达的意思以及这篇文章所要讲述的问题。

为什么?

other.gameObject.tagother.tag都可以用来获取碰撞或触发事件中涉及的另一个游戏对象的标签。但是,两者的使用取决于程序的上下文和other对象的类型。

诶~,这里咱们提到other对象的类型,也就是上面说的参数的类型,为什么上面说忽略就是在这里解释。

请添加图片描述

因为像.tag这样的属性一般是游戏对象才有的,所以参数类型是Collider的话,是不能直接获取tag属性的,要经过.gameObject才可以获取到。相反的,如果参数类型是GameObject的话可以直接通过.tag获取标签。

如何区分

到这里,两者的区别已经很清晰了,就看other是不是GameObject类型的,如果不是,需要经过一层.gameObject获取。下面分别介绍一下各自的使用环境。

使用other.tag:

当other是一个GameObject类型时,你可以直接使用other.tag来获取标签。在这种情况下,other参数直接代表游戏对象,所以可以直接访问其tag属性。

例如:

public GameObject object; 

if(object.tag=="Player"){
	//处理函数
}

使用other.gameObject.tag:

当other不是直接的GameObject类型,而是一个除此之外的其他类型对象时,你需要通过.gameObject属性来访问该对象的tag标签。这是因为gameObject属性提供了游戏对象的引用,从而允许你访问其标签。

例如:

void OnTriggerEnter(Collider other)  
{  
    if (other.gameObject.tag == "Player")  
    {  
        // 处理代码... 
    }  
}

总之,就看游戏对象的类型是什么,如果是GameObject就可以直接获取,不是就需要经过.gameObject获取。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿松爱睡觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值