首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

unity中为什么是 Transform.Find而不是GameObject.Find?

在Unity中,使用Transform.Find而不是GameObject.Find的原因是因为TransformGameObject的组件,而GameObject是游戏对象的基本单位。Transform组件包含了位置、旋转和缩放等属性,而GameObject则是游戏对象的容器。

Transform.Find方法用于在当前Transform对象的子对象中查找指定名称的子对象。它会递归地搜索所有子对象,直到找到指定名称的子对象或者搜索完所有子对象。如果找到了指定名称的子对象,则返回该子对象的Transform组件,否则返回null

GameObject.Find方法用于在整个场景中查找指定名称的游戏对象。它会遍历所有游戏对象,直到找到指定名称的游戏对象或者遍历完所有游戏对象。如果找到了指定名称的游戏对象,则返回该游戏对象的GameObject组件,否则返回null

因为TransformGameObject的组件,所以在使用Transform.Find方法时,我们可以更快速地在当前Transform对象的子对象中查找指定名称的子对象。而GameObject.Find方法则需要遍历整个场景,这会增加查找的时间复杂度。

总之,在Unity中,使用Transform.Find而不是GameObject.Find是因为Transform组件可以更快速地在当前Transform对象的子对象中查找指定名称的子对象。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【100个 Unity小知识点】 | Unity两种获取游戏对象的方法,GameObject.FindTransform.Find区别

Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity 实时3D互动内容创作和运营平台 。...Unity 小知识点学习 GameObject.FindTransform.Find区别 在Unity中最常用的获取游戏对象的方法就是 GameObject.Findtransform.Find...在层级面板变灰的就是处于非激活的对象 此时使用 Transform.Find可以获取到 游戏对象 c,但是GameObject.Find 没法获取到该对象的 所以一般来说需要获取游戏对象的时候使用...当然也可以使用 Public拖拽 的方式手动获取游戏对象,性能方面差异跟Transform.Find不是特别大,所以注意代码规范即可。...Transform.Find 的缺点不便修改层级关系,一旦改变了场景对象的层级关系,代码也会出现报错问题。

2K20

Unity的一些基础总结

这几天重新拾起了自己草草学习的unity技术(不到一周),开始了大胆的模仿原神之路。下面做一些总结。 1....GameObject.Find("ui").transform.Find("menu").gameObject.SetActive(true); ui的隐藏设置: gameObject.SetActive...我这边采用的逻辑,一个物体,当被触发时,将相机移到该被触发的物体这,视角转向该物体进行捕捉,当离开触发区域,重新渲染并且撤走。...细碎的总结 trigger在collider碰撞箱,该触发物体无需物理引擎,因为无论怎样都会被穿透。 音乐组件为audiosource。 如果物体具有物理引擎,那么也应该有碰撞盒子。...好啦,今天就先总结这么多,后面有时间会对unity的向量使用进行一个详细的总结,主要的相机跟随、人物控制、敌人追寻角色等和向量、角度密切相关的功能以及算法。

1.3K20
  • 为什么int main()不是void main()

    C/C++ 小误区:void main() 这是基于我们学校老师一直使用void main(),发的感慨,大一学习C语言时,我就在想,老师上课演示的为什么一直用void main(),不是int main...C 在C89 ,main( ) 可以接受的的经典巨著(C程序设计语言第二版)用的就是main( )不过在最新的C99 标准,只有以下两种定义方式正确的: int main( void ) int...,所以才不支持这个特性现在明白我为什么建议你最好加上return语句了吧!...这当然也不是标准 C/C++ 里面定义的东西!...char *envp[] 某些编译器提供的扩展功能,用于获取系统的环境变量因为不是标准,所以并非所有编译器都支持,故而移植性差,不推荐使用 ******************************

    3.6K70

    为什么删除缓存,不是更新缓存?

    比如可能更新了某个表的一个字段,然后其对应的缓存,需要查询另外两个表的数据并进行运算,才能计算出缓存最新的值的。 另外更新缓存的代价有时候很高的。...是不是说,每次修改数据库的时候,都一定要将其对应的缓存更新一份?也许有的场景这样,但是对于比较复杂的缓存数据计算的场景,就不是这样了。 如果你频繁修改一个缓存涉及的多个表,缓存也频繁更新。...其实删除缓存,不是更新缓存,就是一个 lazy 计算的思想,不要每次都重新做复杂的计算,不管它会不会用到,而是让它到需要被使用的时候再重新计算。...如果删除缓存失败了,那么会导致数据库新数据,缓存旧数据,数据就出现了不一致。 解决思路:先删除缓存,再更新数据库。如果数据库更新失败了,那么数据库旧数据,缓存空的,那么数据不会不一致。...一个请求过来,去读缓存,发现缓存空了,去查询数据库,查到了修改前的旧数据,放到了缓存。随后数据变更的程序完成了数据库的修改。 完了,数据库和缓存的数据不一样了……

    15410

    为什么 useState 返回的 array 不是 object?

    想用自己的话梳理一遍,分享给其他还不了解的同学 正文 先来看看 useState 的日常用法 const [count, setCount] = useState(0) 这里可以看到 useState 返回的一个数组...,那么为什么返回数组不是返回对象呢?...为什么返回数组不是返回对象 要弄懂这个问题要先明白 ES6 的解构赋值,来看 2 个简单的例子: 数组的解构赋值 const foo = [1, 2, 3]; const [one, two, three...,那么使用者可以对数组的元素命名,代码看起来也比较干净 如果 useState 返回的对象,在解构对象的时候必须要和 useState 内部实现返回的对象同名,想要使用多次的话,必须得设置别名才能使用返回值...array 不是 object 的原因就是为了降低使用的复杂度,返回数组的话可以直接根据顺序解构,返回对象的话要想使用多次就得定义别名了 首发自:为什么 useState 返回的 array 不是

    2.2K20

    Unity基础(10)-坐标系统

    笛卡尔坐标 02-Unity的坐标系统 Unity中使用的左手坐标系,X轴代表水平方向 horizontal, Y轴代表垂直方向vertical ,Z轴代表深度。...) GUI界面的坐标系 2-1 世界坐标系 世界坐标系:用来描述游戏场景内所有物体位置和方向的基准,Unity场景创建的物体都是以全局坐标系的坐标原点(0,0,0)来确定各自的位置。...ScreenToWorldPoint: 首先截取一个垂直于摄像机Z轴的,距离为Z的平面P,这样不管X,Y怎么变化,返回的点都只能在这个平面上,参数一个三维坐标,实际上,屏幕坐标只能二维坐标。...("Cube").transform.Find("Sphere").transform.position; Vector3 SpLocalPos = GameObject.Find("Cube...) ,注意:首先截取一个垂直于摄像机Z轴的,距离为Z的平面P,这样不管X,Y怎么变化,返回的点都只能在这个平面上,参数一个三维坐标,实际上,屏幕坐标只能二维坐标。

    4.9K20

    为什么 build 方法放在 State 不是在 StatefulWidget

    老孟导读:此篇文章生命周期相关文章的番外篇,在查看源码的过程中发现了这一有趣的问题,欢迎大家一起探讨。...为什么 build 方法放在 State 不是在 StatefulWidget 呢?其中前2点源代码的注释给出的原因,最后一点我的一点个人理解。...灵活性 将 build 方法放在 State 中比放在 StatefulWidget 更具灵活性,比如说,AnimatedWidget StatefulWidget 的子类,AnimatedWidget...一个抽象类,其中有一个 Widget build(BuildContext context) 的抽象方法,此方法需要子类重写,AnimatedWidget 源代码如下: abstract class...性能 有状态的组件包含StatefulWidget 和 State,当有状态组件的配置发生更改时,StatefulWidget 将会被丢弃并重建, State 不会重建,框架会更新 State 对象

    90420

    为什么AUC值不是GSEA来挑选转录因子呢

    见:基因集的转录因子富集分析 通过学习,我们知道这个RcisTarget包内置的motifAnnotations_hgnc16万行,可以看到每个基因有多个motif。...首先批量计算AUC值 如果单细胞转录组数据里面,每个单细胞都是有一个geneLists,那么就是成千上万个这样的calcAUC分析,非常耗费计算资源和时间,就需要考虑并行处理,我们这里暂时不需要,所以直接...mean(auc) abline(v=nes3, col="red") 可以看到 24453个motifs的AUC值看起来满足正态分布,一般来说,对正态分布,我们会挑选 mean+2sd范围外的认为统计学显著...,但是作者卡的比较严格, mean+3sd ,示意图如下: ?...然后看看motif的详情 这个RcisTarget包内置的motifAnnotations_hgnc16万行,可以看到每个基因有多个motif,我们挑选出来了105个moif,去这个表格里面筛选一下,

    1.2K20

    SPC控制图为什么±3σ,不是±2σ或±4σ?

    SPC控制图就是一个预警系统,预警系统都存在两类风险:第一类风险误报警风险(第一类错误)α,第二类风险漏报警风险(第二类错误)β。...图片举例:举例来说,我们按照μ±3σ的规则,如果发现数据点在μ±3σ之外,我们认为这个数据点异常的,但我们这个判定是错误的概率α,即0.27%,少于统计学的5%的显著性水平。...因为常规控制图的设计思想先确定犯第一类错误的概率α,再确定犯第二类错误的概率β。...按照3σ方式确定CL、UCL、LCL就等于确定了α =0.27%;在统计通常采用α=1%,5%,10%三级,但休哈特为了增加使用者的信心,把常规控制图的α取的特别的小,这样β就比较大,这就需要增加第二类判异准则...这就是为什么常规控制图的异常判定准则有两类,即:点超出控制限就判异和控制限内点排列不随机判异两类。

    46730

    Java为什么要使用单继承不是多继承?

    A、B、C三行的输出0还是1?...对于一个类实现多个接口的情况,因为接口只有抽象方法,具体方法只能由实现接口的类实现,在调用的时候始终只会调用实现类的方法(不存在歧义),因此不存在 多继承的第二个缺点; 而又因为接口只有静态的常量,但是由于静态变量在编译期决定调用关系的...,即使存在一定的冲突也会在编译时提示出错; 引用静态变量一般直接使用类名或接口名,从而避免产生歧义,因此也不存在多继承的第一个缺点。...总结: java为什么要单继承,多实现,总结如下: 若为多继承,那么当多个父类中有重复的属性或者方法时,子类的调用结果会含糊不清,因此用了单继承。 为什么多实现呢?...通过实现接口拓展了类的功能,若实现的多个接口中有重复的方法也没关系,因为实现类必须重写接口中的方法,所以调用时还是调用的实现类重写的方法。 那么各个接口中重复的变量又是怎么回事呢?

    1.7K10

    为什么人工智能被认为机遇不是危险?

    人工智能的腾空出世,让许多人心存疑惑,这究竟对人类来说,机遇,挑战,还是某种未知的危险?成为了一个饱受争议的问题。...现在,人工智能的出现,人们还是会担心它所带来的危机,当然,有后顾之忧正确的。但是,新技术不是让人失业,而是让人做更有价值的事情,让人不去重复自己,而是去创新,让人的工作能够进一步进化。...人工智能虽然在未来依旧有很大的发展空间,但是远远达到不了威胁人脑的地步,人类无须因人工智能恐慌。面对新技术的威胁,与其担心、不如担当。与其担心技术夺走就业,不如拥抱技术,去解决新的问题。

    42310

    为什么 Docker 和 Kubernetes 用 Go 写的不是 C# ?

    HahahahahaSoFunny 为什么 Docker 和 Kubernetes 工具用 Go 写的不是 C#? 总所周知,现在开发人员使用的很多新工具大多是用 Go 写的。...为什么不是 C# 呢? .NET 和 C# 现在功能已经很强大了,是不是社区缺少这种文化?如何才能培养一种更加开源的文化, 因为很多开发人员对 .NET 和 C# 仍然还抱有偏见。...haho5: 不确定为什么 Docker 用 Go 写的, 但是 Kubernetes 确实是 Google 开发的, 并且 Golang 也是。...williane: 不同的工具用于不同的目的,C# 非常适合编写面向用户的产品,它将开发人员从大多数低级细节抽象出来,让我们专注于把业务需求转换为工作代码。... GO 一门简单的语言,很受欢迎,因为好的代码应该易于阅读和理解,以便成千上万的开源程序员做出贡献。 Go 大概只有 25 个关键字, C# 有 100 多个,并且有很多语法糖。

    1.1K00

    在应用开发,我为什么选择 Flutter 不是 React Native ?

    作为一位开发人员,我想在本文中与大家聊聊跨平台开发领域的两大核心选项——Flutter 与 React Native 框架,并介绍我自己为什么更偏爱 Flutter。...双方都能帮助开发人员更快、更轻松地构建并发布应用程序,但作为成熟度更高的框架选项,React Native 的社区规模更大; Flutter 则提供更多内置工具,可帮助用户减少对第三方工具的依赖。...为什么我更倾向于 Flutter 一段时间以来,React Native 一直全球领先的跨平台开发框架。而且在 Flutter 出现之前,React Native 可谓无可匹敌。...React Native 需要使用格拉器或中间件才能通过 JavaScript 与原生组件进行通信, Flutter 则完全不需要。这不仅可以加快开发速度,更可以优化运行速度。...例如,在使用 Flutter 时,应用动画的运行速率可以达到每秒 60 帧。 对于混合应用开发,在将代码、原生组件以及库集成至新架构时,React Native 会带来更高的复杂性。

    3.3K20

    是否还在疑惑Vue.js组件的data为什么函数类型不是对象类型

    分析Vue.js组件的data为何函数类型而非对象类型 引言 正文 一、Vue.jsdata的使用 二、data为对象类型 三、data为函数 结束语 引言 要理解本篇文章,必须具备JavaScript...一般我们会以组件化的思想去开发(别担心,马上讲解什么组件化的思想),所以我们还会用到Vue实例对象的另一个属性components去注册别的组件。...vm2 = { //这里的data,先获取了函数Vue的data(data的值为函数),然后得到了data的返回值 data: { name: '李四', age: '55' }...这是因为这两个实例对象在创建时,先获得了一个函数,将该函数的返回值作为了自己属性data的值,并且这两个实例对象data的值在栈对应的堆的地址也不一样,所以他们不会互相影响。...因为我们刚开始定义了构造函数Vue时,给他内部的data设置了一个值,该值为对象类型,对象类型在js称为引用数据类型,在栈存储着一个指向内存该对象的堆的地址。

    3.5K30

    Java里面Join(),为什么等待的主线程,不是当前子线程?

    但是仔细一想,发现这个明明调用的子线程的join()方法,按道理应该子线程等待执行才是,为什么反而是主线程等待了呢?...源码中注释说明的等待这个线程终止,那就是等待调用Join()的线程终止,再继续往下看: /** * Waits at most {@code millis} milliseconds for...delay); now = System.currentTimeMillis() - base; } } } 从Join的源码,...注意按照程序的执行顺序,我们这里主线程调用的Thread的Join方法,所以是判断子线程的存活状态,满足则让子线程执行,主线程来等待。...wait 等待方法让线程进入等待队列,使用方法 obj.wait(); 这样当前线程就会暂停运行,并且进入obj的等待队列,称作“线程正在obj上等待”。

    81350

    Unity-BattleStar丨5. 给BattleStar游戏添加UI

    ,重命名Menu,并将Canvas重命名MainMenu 根据上篇文章内容,Meun的锚点要在Canvas中心,这样缩放屏幕时会保持相对位置不变 2、将MainMenu Inspector面板Render...的自适应算法) b.当UIScaleMode为Scale With Screen Size时,相当于使用unity的自适应算法,此时unity会根据屏幕分辨率自动调节Scale Factor的值。...它的意思在任何屏幕上不改变 Canvas 的 DPI(一个量度单位,用于点阵数码影像,指每一英寸长度,取样、可显示或输出点的数目),而是调节 Canvas 的物理大小总是与屏幕保持一致。...Records.SetActive(true); List.SetActive(false); } } 想要返回的思路: 可在排行榜增加Button,或者检测空白区域是否被点击,代码采用transform.Find...()方式寻找被关闭的子节点,通过这个特性可打开被关闭的主菜单List GameObject root=GameObject.Find("Menu"); root.transform.Find("List

    11810

    框架篇-Vue面试题1-为什么 vue 组件的 data 函数不是对象

    在vue组件data的属性值函数,如下所示 export default { data() { // data一个函数,data: function() {}的简写 return...页面要初始化的数据 name: 'itclanCoder', }; }, }; 而非:如下所示 export default { data: { // data一个对象...name: 'itclanCoder', }, }; 当一个组件被定义,data必须声明为返回一个初始数据对象的函数,因为组件可能被用来创建多个实例 也就是说,在很多页面,定义的组件可以复用在多个页面...如果data一个纯碎的对象,则所有的实例将共享引用同一份data数据对象,无论在哪个组件实例修改data,都会影响到所有的组件实例 如果data函数,每次创建一个新实例后,调用data函数,从而返回初始数据的一个全新副本数据对象...; p1.data.name = '川川'; console.log(p1.data.name); // 川川 console.log(p1.data.name); // 川川 挂载在原型下属性如果一个对象

    1.9K20

    数组如何随机访问元素?数组下标为什么从0开始,不是1?

    数组如何实现随机访问元素 什么数组? 数组(Array)一种线性表数据结构,它用一组连续的内存空间,来存储相同类型的数据。 什么线性表(Linear List)?...例如:二叉树,堆,图,等,是非线性表,是因为,在非线性表,数据之间并不是简单的前后关系。 数组如何随机访问数组元素? 数组如何实现根据下标随机访问数组元素的吗?...datatype_size:数组每个元素的大小,比如每个元素大小4个字节。 1,数组使用二分法查找元素,时间复杂度O(logn)。 2,根据下标随机访问的时间复杂度O(1)。...为什么数组要从 0 开始编号,不是1? 从偏移角度理解a[0] 0为偏移量,如果从1计数,会多出K-1。增加cpu负担。...为什么循环要写成 for(inti=0;i<3;i++)不是 for(inti=0;i<=2;i++)。

    6.3K10

    为什么企业数据库转向的 CLOUD DATABASE 不是国产数据库

    根据国际金融协会对中国的经济的债务问题进行预测和评估,中国的债务问题从2008年以来,一直是以20%的速度进行增长的,尤其地方的债务问题。...这些对于数据库有什么影响,其实就是成本的问题,一个企业本身一个盈利机构,盈利机构中就必须要针对投入产出比进行衡量,IT 的成本尤其机房的建设本身对于企业的消耗蛮大的,并且这些还是一个持续性的投入,...随着经济的问题凸显,各个企业的项目会缩减,维稳一个主基调,对于一些项目的建设大多是基于灵活性的运作方式,也就是项目走一步算一步,并且灵活性很高,针对这些新的项目的建设就需要评估,而在搞不清这些项目的持续回报的情况下...5 国产数据库同质化产品扎堆,产品特性不明显,内卷化严重,大多数挤在传统单体与分布式数据库,对于客户的需求研究没有下功夫,不过好在有一些产品已经意识到问题,如巨杉数据库,和一些特殊功能的数据库如时序性的数据库...基于数据库产品,国内的大部分云厂商都提供了产品,并且随着使用的企业越来越多,对于产品的持续迭代和快速的更新也是吸引企业持续使用云上产品的保证书,终究企业都是希望使用的产品被验证过的,不是去当小白鼠。

    76040
    领券