Unity查找物体方法的详细对比

2023-11-02

Unity查找物体方法的详细对比


我们开发中常用的查找物体的方法有:GameObject.Find()、transform.Find()、FindGameObjectWithTag()、FindGameObjectsWithTag()、FindObjectOfType()、FindObjectsOfType()、transform.GetChild()、Resources.FindObjectsOfTypeAll。这几种方法各有优缺点,本文会详细进行解释以便于我们在开发应用中需要根据具体情况进行选择(几种方法应用的时候需要的注意区分大小写)。

1.GameObject.Find():
优点:这种方法应用比较方便,可以直接在Hierarchy窗口有物体中查找指定名称的物体,返回第一个没有被隐藏的物体;不用担心重名问题。
缺点:如果对应名称的物体被隐藏了,会出现空引用报错。并且此方法是对全局进行查找比较消耗性能

2.transform.Find():
优点:这种方法可以直接查找根节点在Hierarchy窗口中子物体,可以查找被隐藏的物体,受限比较小
缺点:根节点不能被隐藏,书写不方便,要写入完成路径

3.transform.GetChild():
优点:这种方法可以直接查找根节点在Hierarchy窗口中指定索引的物体,可以查找被隐藏的物体,根节点也可以隐藏,受限更小较小,相比transform.Find()书写,在查找层级比较少的情况下写代码也方便
缺点:在后续的开发中如果改变子物体的顺序会导致查找错误

4.FindGameObjectWithTag和FindGameObjectsWithTag:
对比:FindGameObjectWithTag从上往下查找对应标签的第一个物体,FindGameObjectsWithTag返回一个数组,所有该标签的物体都在那其中(没有被隐藏的)
优点:该方法是通过标签查找,在物体数量比较多层级比较深的情况比较好用
缺点:比较麻烦需要对物体设置标签,如果想要获得某一个该标签的物体的时候,不是很好用;不能查找被隐藏的物体

5.FindObjectsOfType和FindObjectsOfType:
对比:FindObjectOfType从上往下查找含有对应组件的第一个物体,FindObjectsOfType返回一个数组
优点:不需要知道物体的名称或者索引,返回与该类型匹配的对象,
缺点:该函数的运行速度非常缓慢。不建议对每一帧都使用该函数。 在大多数情况下,您可以改为使用单例模式。不能查找隐藏的物体

6.Resources.FindObjectsOfTypeAll:
优点:可以在整个Hierarchy窗口中查找所有物体,特指所有物体,无论有没有被隐藏。通常用在编辑器脚本中
缺点:性能开销比较大

知乎链接
欢迎大家加入知识星球,我们一起进步

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity查找物体方法的详细对比 的相关文章

  • Android中如何通过ViewModel类在Activity和Fragment之间共享数据?

    我想知道是否可以传递一个在 Activity 类中声明的字符串数据 并将该字符串数据传递给 ViewModel 类 然后将数据传递给 Fragment 类 视图模型类 class TimeTableViewModel extends Vie
  • GCM 无法唤醒设备

    我正在开发 GCM 应用程序 当设备不空闲时 即按电源按钮休眠 一切正常 但是 当我在设备空闲时发送消息时 设备不会唤醒 我做了以下事情 已验证服务器应用程序中的delay while idle未设置为true 每条消息使用不同的折叠键 多
  • 如何在android中获取MapView API?

    如何在android中获取MapView API thanks Android 文档中实际上是这么写的 你好 地图视图 http developer android com guide tutorials views hello mapvi
  • 使用 NEON 内在函数除以浮点数

    我当时正在处理四个像素的图像 这是在armv7对于 Android 应用程序 我想分一个float32x4 t向量由另一个向量组成 但其中的数字与大约不同0 7 to 3 85 在我看来 除法的唯一方法是使用右移 但这是针对一个数字2 n
  • 如何使 FirebaseAuth.AuthStateListener 在 Kotlin 中工作?

    class LoginActivity AppCompatActivity private val firebaseAuth FirebaseAuth getInstance private val firebaseAuthListener
  • 如何在 M1 Mac 上运行的模拟器上运行旧版 Android 版本(例如 API 级别 21)?

    虽然现在有一个适用于 M1 mac 的 Android Studio 和支持arm架构的Android模拟器镜像 https stackoverflow com questions 64907154 android studio emula
  • android ndk 多点触控?

    我正在编写一个仅使用本机代码的应用程序 那么ndk中是否可以获取多点触控事件呢 我感觉我已经搜索了整个网络 但什么也没找到 有谁知道如何做到这一点 是的 您可以检查名为native activity查看如何获取输入事件 寻找engine h
  • 如何使用 runOnUiThread 而不出现“无法对非静态方法进行静态引用”编译器错误

    我有一个主课 ClientPlayer extends Activity 和一项服务 LotteryServer extends Service implements Runnable 当尝试在此服务的 run 方法中使用 RunOnUiT
  • 在android中从JSON生成listview

    我对 Android 完全陌生 目前正在尝试从从我的服务器中提取的 JSON 数组生成列表视图 我已经阅读了很多教程 但没有运气 有一种独特的方法可以做到这一点 请您指出一些适合开始的资源 我读过了this http www josecgo
  • 在 /dev/input/eventX 中写入事件需要哪些命令?

    我正在开发一个android需要将触摸事件发送到 dev input eventX 的应用程序 我知道C执行此类操作的代码结构如下 struct input event struct timeval time unsigned short
  • Android 辅助功能服务检测通知

    我试图让我的应用程序在显示通知时进行检测 我已在设置应用程序中启用它并且onServiceConnected确实接到电话 但是当我创建通知或通过 gmail 应用程序接收电子邮件时 什么也没有发生 onAccessibilityEvent没
  • Monodroid 示例/带有源代码的小部件

    我是一名 NET 开发人员 我对用 C 开发 Android 应用程序感兴趣 并且我得到了 monodroid 是否有任何来源可以让我获得 monodroid 示例应用程序 带有源代码 这将帮助我在 monodroid 中开发应用程序 或者
  • 警报对话框中的 Webview 不显示内容

    我正在开发一个 Android 应用程序 我需要在网络视图和警报对话框上显示一个网站 该站点显示在网络视图中 但不显示在警报对话框中 到目前为止 这是我的代码 WebView WebView myWebView WebView v find
  • Android Gradle 问题 - Flutter / Dart

    我的 Gradle 同步有问题 我使用 IntelliJ 和 Android Studio 构建 Flutter Dart 应用程序 我添加了 2 个新的依赖项 现在 Gradle 出现了问题 在 Android Studio 中一切正常
  • Android应用主题更换流畅

    我正在开发一个提供白天和夜间主题的项目 我正在更改主题 夜间主题 AppCompatDelegate setDefaultNightMode AppCompatDelegate MODE NIGHT YES 日主题 AppCompatDel
  • Android 为什么这不会抛出错误的线程异常?

    我的印象是视图只能从主线程操作 但是 为什么这不会崩溃 public class MainActivity extends Activity TextView tv Override protected void onCreate Bund
  • 在android中从SD卡上传图像到facebook

    我无法从 SD 卡上传 Facebook 上的图像 我使用了下面的代码 但它没有给我错误 但同时它没有上传图像 byte data null try FileInputStream fis new FileInputStream filep
  • 如何使用 isInEditMode() 在编辑器中查看自定义视图的布局

    我必须编辑一个具有自定义视图的软件 当我尝试编辑布局 xml 时 Eclipse 告诉我 在自定义视图中使用 View isInEditMode 可以在显示时跳过代码 在日食中 但我不知道how and where我必须使用isInEdit
  • Activity 暂停时调用 FragmentManager.popBackStack 是否安全

    的文档FragmentManager popBackStack https developer android com reference android app FragmentManager html popBackStack java
  • View.post(),以及当Runnables被执行时

    我最初的问题是需要知道我的根的高度和宽度View这样我就可以进行程序化的布局更改 就我的目的而言 我不一定需要在onCreate 对于我来说 以编程方式添加我的孩子就足够了View根布局完成后 因此我很乐意使用onWindowFocusCh

随机推荐

  • pom.xml的scope/classifier等容易忽略标签

    文章目录 一 scope标签的值 二 pom xml案例 三 scope不同值参与阶段 四 Maven的打包三种插件 五 classifier使用 1 classifier概述 2 使用场景 六 optional标签使用 一 scope标签
  • 微信小程序——生命周期

    在微信小程序中 可以通过生命周期函数来执行相应的代码操作 以下是一些常见的生命周期代码操作示例 在 onLoad 生命周期中进行数据初始化和网络请求 onLoad function options 数据初始化 this setData na
  • 3-Numpy数组操作2(索引和切片)

    索引和切片 一维 a1 np arange 0 20 print a1 print a1 1 gt gt gt 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 多维 a2 np ara
  • 目标检测中的Label Assignment

    PaperWeekly 原创 作者 燕皖 单位 渊亭科技 研究方向 计算机视觉 CNN Label Assignment Label assignment 主要是指检测算法在训练阶段 如何给特征图上的每个位置进行合适的学习目标的表示 以及如
  • idea常用插件和注释

    背景 随着idea越来越受开发者捧月 相信很多人 无论在换公司或者配置新得电脑 都会重新配置各种各样得插件 比如 lombok mybatis系列 maven等 但人得记忆都有限得 每天都在行走 从未没有停下 借用法师一句话 人生那么长 停
  • 无序链表的归并排序 - Java代码纯享版

    public class ListNodeMergeSort public static class ListNode int val ListNode next public ListNode int val this val val p
  • 嵌入式linux内存分析

    在linux的桌面发行版中 一般都会有一个swap分区 然而在用FLASH做存储介质的嵌入式设备中 是没有交换分区的 这主要的有如下原因 1 一旦使用了交换分区 系统的性能将下降得很快 不可接受 2 FLASH的写次数有限的 大概在几十万次
  • win10 安装 mysql server

    welcome to my blog 如何启动mysql server 只需四步 安装 配置mysql server 第一步 去官网下载mysql server 下载地址 有两个下载链接 第一个安装包比较小 第二个安装包比较大 因为包含调试
  • CCP集成和基于CANoe的简易标定实现

    CCP简介 CCP就是基于CAN总线的标定协议 在没有这个协议之前 每个供应商有自己的标定工具和协议 五花八门 很难协调 终于有一天有个哥们跳出来制定了一个规范 说大家伙都按这个方法来搞标定测试吧 这个哥们就是ASAP CCP协议属于其中的
  • 最大类间方差(大津法)

    1 概述 最大类间方差法是由日本学者大津 Nobuyuki Otsu 于1979年提出的 是一种自适应的阈值确定的方法 又叫大津法 简称OTSU 它是按图像的灰度特性 将图像分成背景和目标2部分 背景和目标之间的类间方差越大 说明构成图像的
  • 好玩的脚本代码大全_Scriptable脚本——网易云热评

    Scriptable脚本 网易云热评 今天我为大家带来新的作品 iOS14桌面组件神器 Scriptable 原创脚本 精美作品分享 喜欢的话就点关注吧 更多脚本正在路上 效果图 如何使用 iPhone 上下载 Scriptable App
  • Tree with Maximum Cost---CF1092F 树上DP

    F Tree with Maximum Cost time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstand
  • LoRa学习总结(三)

    之前总结是LoRa的基本知识 接下来是都是代码的结构或者细节方面的总结 1 协议介绍 协议将分成三层 射频层 MRFI 网络层 NWK 应用层 APP 2 射频层 这里没有通常所说的物理层和数据链路层 因为这是有Radio芯片将传输过来的数
  • 第3期大模型前沿讲习班报名中,顶尖专家面授,多角度系统培训

    人工智能研究与应用范式正经历一场剧变 越来越多的顶级团队和杰出人才纷纷加入这一变革浪潮 作为AI大模型科研先锋 智源研究院携手一批卓越的学者与工程师 致力于将尖端技术与经验传授给有潜力的学习者 通过高效的学习方式 让更多人能迅速融入这一重要
  • 基于JAVA新型农村消费贷电商平台计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA新型农村消费贷电商平台计算机毕业设计源码 系统 数据库 lw文档 部署 基于JAVA新型农村消费贷电商平台计算机毕业设计源码 系统 数据库 lw文档 部署 本源码技术栈 项目架构 B S架构 开发语言 Java语言 开发软件 i
  • C++ 小记 :使用 string 定义变量要先初始化

    使用 string 时先给其初始化 否则可能出现未知错误 初始化时 如下是错误示例 std string str NULL 如下是正确示例 std string str
  • doxygen简明使用教程

    1 工作环境 ubuntu18 04 2 安装二进制 sudo apt get install doxygen doxygen doc doxygen gui graphviz 一次性二进制全安装上 发现竟然已经安装过了 3 调用该命令雕出
  • AIGC图像生成的原理综述与落地畅想

    AIGC 这个当前的现象级词语 本文尝试从文生图的发展 对其当前主流的 Stable Diffusion 做一个综述 以下为实验按要求生成的不同场景 风格控制下的生成作品 概述 技术演进一 昙花初现 GAN 家族 GAN 系列算法开启了图片
  • Android中Application类用法

    Application类 Application和Activity Service一样是Android框架的一个系统组件 当Android程序启动时系统会创建一个 Application对象 用来存储系统的一些信息 Android系统自动会
  • Unity查找物体方法的详细对比

    Unity查找物体方法的详细对比 我们开发中常用的查找物体的方法有 GameObject Find transform Find FindGameObjectWithTag FindGameObjectsWithTag FindObject