【Unity】获取游戏对象或组件的常用方法

前言

在Unity开发过程中,我们经常需要获取组件,那么在Unity里如何获取组件呢?

一、获取游戏对象

1.GameObject.Find

GameObject.Find 是通过物体的名称获取对象的
所以会遍历当前整个场景,效率较低
而且只能获取激活状态的物体对象

在这里插入图片描述

2.Transform.Find

Transform.Find 可以在一个游戏对象的子对象中查找指定名称
查找对象的名称必须是唯一的。如果有多个同名的子对象,只会返回其中一个对象,且无法保证返回的是哪一个。
修改一下刚刚的方法,来测试一下

在这里插入图片描述

3.GameObject.FindWithTag

GameObject.FindWithTag:在场景中查找具有指定标签的 GameObject 对象,并返回第一个匹配且是激活状态的对象。
在这里插入图片描述

4.GameObject.FindGameObjectWithTag

GameObject.FindGameObjectWithTag :用法与FindWithTag相同
GameObject.FindGameObjectsWithTag:用法与FindWithTag相同,返回数组

5.Transform.GetChild

Transform.GetChild可以获取当前物体的子对象,返回一个 Transform 对象。可以使用该方法遍历整个层级结构。
子对象的索引是从 0 开始。例如,transform.GetChild(0) 表示获取当前 Transform 组件的第一个子对象。

        // 查找UnityObj GameObject obj1 = GameObject.Find("UnityObj");//获取obj1的子对象个数int count = obj1.transform.childCount;for (int i = 0;i < count;i++){Transform child = obj1.transform.GetChild(i);Debug.Log(child.name);}

在这里插入图片描述

5.Transform.parent

Transform.parent可以获取对象的父集对象
在这里插入图片描述

二、获取组件

1.GameObject.GetComponent相关

GameObject.GetComponent(): 获取当前物体组件类型的引用
GameObject.GetComponents(): 获取当前物体所有组件类型的引用在这里插入图片描述

GameObject.GetComponentInParent(): 在父级中查找指定类型的组件。会沿着组件的父级链一直向上查找,直到找到指定类型的组件或者到达根对象为止。如果找到了则会返回该组件的引用,否则返回 null。
GameObject.GetComponentsInParent(): 原理同上,返回所有查找的目标数组

GameObject.GetComponentInChildren(): 在子级中查找指定类型的组件。会沿着组件的子级链一直向下查找,直到找到指定类型的组件或者到达最后一个子对象为止。如果找到了则会返回该组件,否则返回 null。
GameObject.GetComponentsInChildren(): 原理同上,返回所有查找的目标数组

2.GameObject.FindObject相关

		//查找Image组件Image img1 = GameObject.FindObjectOfType<Image>();//查找Image组件,包含未激活的组件Image img2 = GameObject.FindObjectOfType<Image>(true);//查找所有Image组件,返回组件列表Image[] imgList = Resources.FindObjectsOfTypeAll<Image>();//返回与指定类型匹配的第一个活动加载对象。如果没有与指定的类型匹配,返回null。Image img3 = GameObject.FindFirstObjectByType<Image>();//返回与指定类型匹配的任意活动加载对象。如果没有与指定类型匹配的对象,返回null。Image img4 = GameObject.FindAnyObjectByType<Image>();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/762224.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytorch多层感知机

目录 1. 多层感知机2. 多层感知机loss梯度推导3. pytorch示例 1. 多层感知机 有多个输入节点、多个中间节点和多个输出节点 2. 多层感知机loss梯度推导 3. pytorch示例

MySQL 字段定义时的属性设置

开发的时候第一步就是建表&#xff0c;在创建表的时候&#xff0c;我们需要定义表的字段&#xff0c;每个字段都有一些属性&#xff0c;比如说是否为空&#xff0c;是否允许有默认值&#xff0c;是不是逐渐等。 这些约束字段的属性&#xff0c;可以让字段的值更符合我们的预期&…

将多个 Node.js 服务打包成一个镜像,并在 Docker Compose 中使用这个镜像

要将多个 Node.js 服务打包成一个镜像&#xff0c;并在 Docker Compose 中使用这个镜像&#xff0c;创建一个统一的 Dockerfile 来构建所有的 Node.js 服务&#xff0c;并将这些服务打包到同一个镜像中。然后&#xff0c;在 Docker Compose 文件中&#xff0c;您只需引用这个统…

HCIP—BGP路由聚合

在大型网络中&#xff0c;路由条目通常多达成千上万条&#xff0c;甚至几十万条&#xff0c;这给路由设备带来的挑战是&#xff1a;如何存储并有效管理如此众多的路由信息&#xff1f; BGP是一种无类路由协议&#xff0c;支持CIDR、VLSM和路由聚合。路由聚合技术的使用…

[Linux开发工具]——gcc/g++的使用

Linux编译器——gcc/g的使用 一、快速认识gcc/g二、程序的翻译过程2.1 预处理&#xff08;.i文件&#xff09;2.2 编译&#xff08;.s文件&#xff09;2.3 汇编&#xff08;.o文件&#xff09;2.4 链接&#xff08;生成可执行文件或库文件&#xff09; 三、认识函数库3.1 静态库…

微调alpaca-lora遇到的一些问题

1、环境简介 环境&#xff1a; 系统&#xff1a;Ubuntu torch&#xff1a;2.2.1 python&#xff1a;3.10 gpu&#xff1a;V100 16g peft&#xff1a;0.9.0 使用PEFT中的lora方式微调llama-2-7b-hf&#xff0c;项目地址&#xff1a;alpaca-lora 2、混合精度训练Tensor相互计算会…

Linux hdparm命令教程:优化硬盘性能和读写速度(附实例详解和注意事项)

Linux hdparm命令介绍 hdparm 是一个用于控制和配置硬盘驱动器的命令行工具。它允许您查看和修改硬盘的参数&#xff0c;包括缓存设置、高级电源管理、硬盘性能等。通过 hdparm&#xff0c;您可以优化硬盘的读写速度和性能。 Linux hdparm命令适用的Linux版本 hdparm 在大多…

springboot/ssm小区家政服务预约平台统Java家政在线预约管理系统web

springboot/ssm小区家政服务预约平台统Java家政在线预约管理系统web 基于springboot(可改ssm)vue项目 开发语言&#xff1a;Java 框架&#xff1a;springboot/可改ssm vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#…

【RH134问答题】第十三章 运行容器(上)

系列文章 第一章 提高命令行生产效率 第二章 计划将来的任务 第三章 调优系统性能 第四章 使用ACL控制对文件的访问 第五章 管理SELinux安全性 第六章 管理基本存储 第七章 管理逻辑卷 第八章 实施高级存储功能 第九章 访问网络附加存储 第十章 控制启动过程 第十一章 管理网络…

Redis Lua脚本:赋予Redis更强大的逻辑与功能

Redis 脚本是一种用 Lua 编写的脚本&#xff0c;可以在 Redis 服务器端执行。脚本能够原子地执行多个 Redis 命令&#xff0c;并且通过 EVAL 和 EVALSHA 命令进行调用。Redis 脚本通常用于实现复杂的逻辑操作&#xff0c;例如事务、原子性操作和复杂的数据处理。 Redis脚本的详…

[json.exception.type_error.316] invalid UTF-8 byte报错

[json.exception.type_error.316] invalid UTF-8 byte at index 1: 解决方法重新编译程序即可。

六、大模型-Prompt-API介绍

GPT-3.5 API 提供了一个名为 openai.ChatCompletion.create() 的端点&#xff0c;您可以使用该端点来与 ChatGPT 进行交互。以下是 openai.ChatCompletion.create() 的详细 API 说明&#xff1a; 请求参数&#xff1a; messages&#xff1a;一个数组&#xff0c;包含对话中的消…

[接口生成] 1. 数据库生成

我们在做页面的时候&#xff0c; 一般都要和数据相适应&#xff0c;这个时候就需要去修改数据库&#xff0c; 至少需要数据库相关的人员配合&#xff0c; 改来改去的容易产生一些版本遗留问题。 就算是我一个人开发&#xff0c; 一会儿搞前端&#xff0c;一会儿搞后台&#xf…

Jupyter Notebook介绍、安装及使用教程

Jupyter Notebook介绍、安装及使用教程 一、什么是Jupyter Notebook&#xff1f;简介组成部分网页应用文档Jupyter Notebook的主要特点 二、安装Jupyter Notebook先试用&#xff0c;再决定安装安装前提使用Anaconda安装使用pip命令安装 三、运行Jupyter Notebook帮助启动默认端…

Python 解决大文件的写入但查看却生效不及时的问题

文章目录 1. 问题2. 原因3. 解决方法4. 补充 flush() 介绍4.1 语法4.2 说明4.3 示例4.4 使用场景 1. 问题 在写入大文件内容时&#xff0c;程序还没有结束&#xff0c;如下在运行&#xff1a; with open("xxx", "a") as f:... # 你的逻辑f.write("x…

macOS 通过 MacPorts 正确安装 MySQL 同时解决无法连接问题

如果你通过 sudo port install 命令正常安装了 MySQL&#xff0c;再通过 sudo port load 命令启动了 MySQL Server&#xff0c;此刻却发现使用 Navicat 之类的 GUI 软件无法连接&#xff0c;始终返回无法连接到 127.0.0.1 服务器。这是一个小坑&#xff0c;因为他默认使用了 So…

Linux创建软连接后,无法直接调用的原因和解决办法

我自己遇到的问题&#xff1a; 进入到主目录&#xff1a; cd 创建一个main软连接后&#xff1a; ln -s /home/user01/demo01.py main 执行&#xff1a; main 没反应。 试了下发现是调用方法的问题&#xff0c;因为main是主目录下的一个软链接&#xff0c;所以调用方式应该是&…

linux 串口通讯模板

RAW模式与非RAW模式 RAW 模式&#xff1a; 简单的来说&#xff0c;就是发送端发动的二进制码原封不动的被接收端接收。 若干年前使用Windows下的串口调试助手对单片机串口进行调试就是使用的 RAW 模式&#xff0c; 单片机发送的数据被原封不动的发送给 PC 端&#xff0c;PC 端…

零代码编程:用kimichat将srt字幕文件进行批量转换合并

文件夹里面有多个srt字幕文件&#xff0c;借助kimichat可以很方便的对其进行批量合并。 在kimichat中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;写一个Python脚本&#xff0c;完成一个处理整理文档内容的任务&#xff0c;具体步骤如下&#xff1a; 打开文件…

更新数据库表中的数据

目录 update 加上各种限制条件 update update 表名set 列名1xx,列名2xx 指定更新某列数据如果不添加where子句,则为全列更新 也可以在原有基础上更新: 注意,mysql语法里不支持,必须是列名列名数值 加上各种限制条件 比如加上order by子句,where子句,limit等 这些条件对于up…