【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>();
相关文章:
【Unity】获取游戏对象或组件的常用方法
前言 在Unity开发过程中,我们经常需要获取组件,那么在Unity里如何获取组件呢? 一、获取游戏对象 1.GameObject.Find GameObject.Find 是通过物体的名称获取对象的 所以会遍历当前整个场景,效率较低 而且只能获取激活状态的物体…...
html5cssjs代码 024 响应式布局示例
html5&css&js代码 024 响应式布局示例 一、代码二、解释 该HTML代码重点在于构建一个带有响应式设计的两栏布局网页,包含页头、导航条、主要内容区(左右两列)和底部区域,并运用CSS样式设置页面元素的布局、颜色、字体、间…...
json详解
文章目录 概述JSON 发展史什么是 JSON为什么要使用 JSONJSON 的不足JSON 应该如何存储什么时候会使用 JSON1) 定义接口2) 序列化3) 生成 Token4) 配置文件 Json分类json-lib开源的JacksonGoogle的Gson阿里巴巴的FastJsonJSON.simple JSON 序列化方式有哪些消息队列中传输的数据…...
C语言之---柔性数组
1.1前记 也许你从来没有听说过柔性数组这个概念,但是它是确实存在的。 C99中,结构中的最后一个元素允许是未知大小的数组,这就是柔性数组成员。 例如: struct st_type {int i;int a[0]; }; 有些编译器会报错无法编译可以改为:…...
鸿蒙错误记录
鸿蒙错误代码记录 只是记录学习过程中的错误 只是记录学习过程中的错误 刚开始入手学习鸿蒙,错误记录一下 BussinessError 200 授权没有成功,需要先申请权限 BussinessError 3301200:定位时没有网络,打开网络即可...
Leetcode热题100:图论
Leetcode 200. 岛屿数量 深度优先搜索法: 对于这道题来说,是一个非常经典的图的问题,我们可以先从宏观上面来看问题,也就是说在不想具体算法的前提下,简单的说出如何找到所有的岛屿呢? 如图中所示&#x…...
刚进公司第一天-电脑环境搭建
写在前面 之前在公司做过一次开发小工具的分享,这两天有个同事找我学习一些小工具开发的知识,但是我发现他的基础是真的差,想学开发知识却连自己本地电脑环境都没弄好,确实,有些人工作了很久,由于自己工作中…...
kubernetes集群报 unable to load bootstrap kubeconfig处置思路
一.现状和问题现象 公司kubernetes集群是通过kubeadm工具安装的,使用1年之后证书到期。在 kubernetes control plane maste节点服务器上运行 kubeadm certs renew all 命令更新证书后,kubelet 无法正常启动,报错日志如下 Failed to run kube…...
MacBook远程桌面Windows使用Microsoft Remote Desktop for Mac_亲测使用
MacBook远程桌面Windows使用Microsoft Remote Desktop for Mac_亲测使用 像Windows上有自带的远程桌面连接软件.MacBook没有自带的远程连接Windows桌面的工具,需要安装软件来实现. 像远程桌面控制软件一般有 TeamViewer、向日葵远程控制, ToDesk, Microsoft Remote Desktop f…...
Huggingface 笔记:大模型(Gemma2B,Gemma 7B)部署+基本使用
1 部署 1.1 申请权限 在huggingface的gemma界面,点击“term”以申请gemma访问权限 https://huggingface.co/google/gemma-7b 然后接受条款 1.2 添加hugging对应的token 如果直接用gemma提供的代码,会出现如下问题: from transformers i…...
WebGL 理论基础 01 WebGL 基础概念
WebGL 理论基础 基础概念 WebGL 基础概念 顶点着色器的作用是计算顶点的位置。根据计算出的一系列顶点位置,WebGL可以对点, 线和三角形在内的一些图元进行光栅化处理。当对这些图元进行光栅化处理时需要使用片段着色器方法。 片段着色器的作用是计算…...
Leetcode 28:找出字符串中第一个匹配项的下标
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 示例 1: 输入:haystack &q…...
docker opensearch arm64 运行失败解决方案
opensearch版本 2.1.0 docker日志错误信息: Disabling execution of install_demo_configuration.sh for OpenSearch Security Plugin Enabling OpenSearch Security Plugin Killing opensearch process 10 OpenSearch exited with code 143 Performance analyze…...
C#、ASP、ASP.NET、.NET、ASP.NET CORE区别、ASP.NET Core其概念和特点、ASP.NET Core个人心得体会
C#是一种面向对象的编程语言,主要用于开发跨平台的应用程序。它是.NET框架的一部分,并且可以在.NET平台上运行。 ASP(Active Server Pages)是一种用于构建动态Web页面的技术,使用VBScript或JScript作为服务器端脚本语…...
SpringMVC 简介及入门级的快速搭建详细步骤
MVC 回顾 MVC,即Model-View-Controller(模型-视图-控制器)设计模式,是一种广泛应用于软件工程中,特别是Web应用开发中的架构模式。它将应用程序分为三个核心组件: Model(模型)&#…...
Flutter编译卡在Running Gradle task ‘assembleDebug
1、翻墙 2、修改国内镜像源(以下以Flutter 3.19.3版本为例) 找到Flutter SDK目录下的Flutter配置文件resolve_dependencies.gradle 路径:flutter/packages/flutter_tools/gradle/resolve_dependencies.gradle 1)、第一处修改: g…...
基于springboot的牙科就诊管理系统
技术:springbootmysqlvue 一、系统背景 当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化,规范化管理。这样…...
C语言 指针练习
一、 a、b是两个浮点型变量,给a、b赋值,建立两个指针分别指向a的地址和b的地址,输出两个指针的值。 #include<stdio.h> int main() {float a,b,*p1,*p2;a10.2;b2.3;p1&a;p2&b;printf("a%f,b%f\n",a,b);printf("…...
【力扣 TOP100】 无重复字符的最长子串
题目描述: 思路: 使用left和right表示子串的端点。每次判断新的right是否在之前的子串里,如果在,则将left更新为新字符在子串里的位置(因为在此之间,没有更长的子串了)。如果不在则right1&…...
K8S node磁盘清理
K8S磁盘清理 K8S的部署形式相比传统非容器部署,会消耗更多的磁盘,在运行时可能会把磁盘占满。 这里以使用containerd运行时的K8S node为例,说明磁盘会用到那里了和如何清理磁盘 通用处理 磁盘清理: du -h --max-depth6 / 2>/dev/nul…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
