当前位置: 首页 > news >正文

【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.lryc.cn/news/323067.html

相关文章:

  • html5cssjs代码 024 响应式布局示例
  • json详解
  • C语言之---柔性数组
  • 鸿蒙错误记录
  • Leetcode热题100:图论
  • 刚进公司第一天-电脑环境搭建
  • kubernetes集群报 unable to load bootstrap kubeconfig处置思路
  • MacBook远程桌面Windows使用Microsoft Remote Desktop for Mac_亲测使用
  • Huggingface 笔记:大模型(Gemma2B,Gemma 7B)部署+基本使用
  • WebGL 理论基础 01 WebGL 基础概念
  • Leetcode 28:找出字符串中第一个匹配项的下标
  • docker opensearch arm64 运行失败解决方案
  • C#、ASP、ASP.NET、.NET、ASP.NET CORE区别、ASP.NET Core其概念和特点、ASP.NET Core个人心得体会
  • SpringMVC 简介及入门级的快速搭建详细步骤
  • Flutter编译卡在Running Gradle task ‘assembleDebug
  • 基于springboot的牙科就诊管理系统
  • C语言 指针练习
  • 【力扣 TOP100】 无重复字符的最长子串
  • K8S node磁盘清理
  • 2024年上半年软考,现在开始学真的来得及吗?
  • SfM——八点法计算F矩阵(基础矩阵)与三角测量
  • 分布式事务的解决方案--Seata架构
  • 【 React 】React JSX 转换成真实DOM的过程?
  • [Open3d]: 知识记录
  • css面试题
  • vscode调试launch.json常用格式
  • 巨细!Python爬虫详解
  • 项目中如何进行限流(限流的算法、实现方法详解)
  • https在win7的环境下如何配置
  • Day69:WEB攻防-Java安全JWT攻防Swagger自动化算法签名密匙Druid泄漏