为什么要加.gameObject_unity脚本API

news/2024/9/17 7:00:30 标签: unity, 游戏引擎, 游戏, unity开发

为什么要加.gameObject

  • 标题是什么意思?
  • 为什么?
  • 如何区分
    • 使用other.tag:
    • 使用other.gameObject.tag:

标题是什么意思?

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

请添加图片描述

首先举个简单的例子,在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获取。


http://www.niftyadmin.cn/n/5283755.html

相关文章

MFC 工具栏

目录 工具栏概述 工具栏的使用 添加工具栏资源 创建,加载工具栏 设置工具栏停靠 工具栏概述 CToolBarCtrl-父类CWnd,封装了关于工具栏控件的各种操作。 CToolBar一父类CControlBar,封装了关于工具栏的操作,以及和框架窗口的…

Python 常用模块re

Python 常用模块re 【一】正则表达式 【1】说明 正则表达式是一种强大的文本匹配和处理工具,主要用于字符串的模式匹配、搜索和替换。正则表达式测试网址:正则表达式在线测试 正则表达式手册:正则表达式手册 【2】字符组 字符转使用[]表…

全面的开发者文档和用户目标解析:API 文档指南和开发者旅程

开发者文档 开发者文档,也称为 API 文档,是一种专门针对软件开发人员的技术写作形式。这种类型的文档通常包括 API 的技术规范、代码注释、软件设计和架构以及软件开发中涉及的其他详细技术描述。开发者文档是开发人员的重要工具,因为它提供…

【设计模式】RBAC 模型详解

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、什么是 RBAC 呢? 二、RBAC 的组成 三、RBAC 的优缺点 3.1 优点: 3.2 缺点: 四、RBAC 的…

c# OpenCvSharp 轮廓绘制六步骤你学会了吗(六)

轮廓绘制通过下面6个步骤得出轮廓 读取图像 Cv2.ImRead();将图像转换为灰度图像 Cv2.CvtColor();对图像进行模糊处理 滤波Cv2.Blur();边缘检测Canny();查找轮廓Cv2.FindContours();绘制轮廓Cv2.DrawContours(); 图例(自娱自乐一下上个扑克牌玩一下&…

【哲学 学习笔记01】哲学家及其思想汇总

文章目录 一、声明二、认知论领域休谟著作休谟问题 三、人生的意义(暂时不知道属于哲学哪个领域)加缪著作 叔本华陀思妥耶夫斯基 一、声明 本帖持续更新!本帖重在汇总,大部分具体内容都是东拼西凑复制来的,后续会进行…

Linux普通玩家,熟悉这些高频命令就行了

回想当时入门Linux时抱着鸟叔的私房菜啃,看了没几页就放弃了 如果主要从事算法相关工作,其实高频使用的命令就那么些,一起看看吧 用户相关 id – 显示用户的详细信息(uid、gid和group)last – 列出有关最近登录的信…

51单片机分支程序实验

一、实验内容 1.基本要求 掌握51汇编语言调试技巧;实现三个数(R5,R6,R7)(初值为本人班级学号后六位,每两位以HEX格式填入一个寄存器)中找出最大和最小值,最大值存到R3,最小值存到R4; 2.扩展要求 将数据从R5,R6,R7改…