美文网首页
GameObject.Find和transform.Find的区

GameObject.Find和transform.Find的区

作者: Levi_Wan | 来源:发表于2016-12-26 22:30 被阅读639次

今天做个小Demo,将物品缩略图使用做成Button,点击对应的图片就生成缩略图对应的物品。为了提高效率就判断物品是否已经在场景中,如果存在就把enable属性设置为true,没有存在场景中就实例化生成。其中使用了GameObject.Find方法去判断结果发现了GameObject.Find无法找到隐藏的对象。于是就探寻了transform.Find的方法去解决。这里总结一下它们的区别。

GameObject.Find

  • 无法查找隐藏对象 隐藏对象包括查找路径的任何一个父节点隐藏(active=false)
  • 如果查找不在最上层,建议合理使用路径查找,路径查找是把双刃剑
  • 优缺点:
    • 优点1:解决查找中可能出现的重名问题。
    • 优点2:如果有完全的路径,减少查找范围,减少查找时间。
    • 缺点: 路径或结构调整后,容易影响到程序中的查找,需要重新定位查找路径。
  • 如果路径查找中的任何一个父节点active=false,这个对象都将查找不到。
  • 使用方便但效率低下 此查找相当于递归遍历查找,虽使用方便但效率堪忧,建议在Start()函数中查找对象并保存引用,切忌在Update()中动态查找。

transform.Find

  • 可以查找隐藏对象

  • 支持路径查找

  • 查找隐藏对象的前提是transform所在的根节点必须可见,即active=true

  • 优点:

    • 相较于Game.Find,transform.Find更加节省资源。

找到问题的原因以后,使用了一个空物体empty去作为物品的容器,将实例化生成的物品作为empty的子物体。然后隐藏了以后使用transform.Find去查找到隐藏掉的对象并激动即可。

相关文章

  • GameObject.Find和transform.Find的区

    今天做个小Demo,将物品缩略图使用做成Button,点击对应的图片就生成缩略图对应的物品。为了提高效率就判断物品...

  • 在unity3d中寻找某个父物体中的一个子物体

    当然,你还可以直接就用transform.Find()。方法去找。 注意:transform.Find()是可以找...

  • UICamera 世界转UI坐标

    Vector2 pos; Canvas canvas = GameObject.Find("Canvas"...

  • 查找游戏对象的方法:

    通过对象名称(Find方法) GameObject.Find() 不可以查找active=false的游戏对...

  • Unity查找效率对比

    之前读过一篇文章,说慎用GameObject.Find,效率不高,导致我这两年开发都基本不用GameObject....

  • 舒适区、学习区和恐慌区

    认知世界三个区:舒适区、学习区、恐慌区 美国人NoelTichy提出的理论,图里的3个区可以表示为你想学习的事物的...

  • 表现区和学习区

    两个区:学习区和表现区。 在学习区,我们勇敢地闯入不熟悉的领域,从错误中吸取教训,获得成长; 在表现区,我们做最熟...

  • 压力区和支撑区

    股价运行是有规律可循的,涨不动的原因除了上涨动力不足,还有一种情况是抛压过大,大概其是受到了阻力线的压制,到了压力...

  • 【Java】栈区、堆区和方法区的解析

    栈区 栈区描述的是方法执行的内存模型。每个方法在执行时都会创建一个栈帧(存放存储局部变量、操作数栈、动态链接、方法...

  • iOS的关于堆区和栈区

    堆和栈的概念区别 堆: 是大家共有的空间,分全局堆和局部堆。全局堆就是所有没有分配的空间,局部堆就是用户分配的空间...

网友评论

      本文标题:GameObject.Find和transform.Find的区

      本文链接:https://www.haomeiwen.com/subject/etlsvttx.html