美文网首页
Unity查找效率对比

Unity查找效率对比

作者: hh5460 | 来源:发表于2018-07-23 10:08 被阅读0次

之前读过一篇文章,说慎用GameObject.Find,效率不高,导致我这两年开发都基本不用GameObject.Find去寻找物体,现抛开GameObject.Find查找的限制条件,单纯的比较Unity中几个查找方式的查找性能
测试样本:
我们在unity中新建一个场景,我们定义10个需要查找的样例名字和Tag标签都分别为"Target0"-"Target9",然后将其放在30层深度的路径下,来分别测试一下查找方式的性能

  1. GameObject.Find(string name) 通过名字查找
  2. GameObject.Find(string path) 通过完整路径查找
  3. Transform.Find(string path) 通过完整路径查找
  4. Transform.GetChild(int index) 通过子物体位置索引
  5. GameObject.FindGameObjectWithTag(string tag) 通过Tag标签查找
测试结果.png

由上述结果可知,当 GameObject.Find(string name) 满足查询条件时,即可确保其能查到目标物体时候,应该推荐使用该方式,不推荐使用不是因为查找效率不高,而是查找限制大,没有Transform.Find(string path)能确保查到目标.
还有部分开发者说查找时候要提供完整的路径比根据名字便利查找效率更高,但是上述测试结果与此结论天壤之别,可能的原因是Unity并没有为每一个GameObject物体存储完整的索引,激活的物体应该是直接存储名字提供查找,所以提供完整的路径查找对于GameObject.Find这种方式不推荐使用!!!通过完整路径查找应该使用Transform.Find(string path)查找,虽然它的效率在以上几种查找方式里看起来不是最高的,但是它查找受到的限制较小,例如不用担心在游戏逻辑中隐藏了物体而导致使用GameObject.Find查找不到的问题

所以说要做到性能最佳的查找应该将GameObject.Find(string name)和Transform.Find(string path)和Transform.GetChild(int index) 和GameObject.FindGameObjectWithTag(string tag)几种方式根据需求相结合

1.当GameObject.Find(string name) 查找条件不受限制时,用GameObject.Find
2.当查找数量不多,且需要包含隐藏物体时,各子物体索引位置可能会发生变化时,用Transform.Find(string path)
3.当查找数量不多,且需要包含隐藏物体时,各子物体索引能确保不变时,Transform.GetChild(int index) 效率更高
4.当路径过长过深时,且目标物体数量较多成组时,可以为其设置Tag然后FindGameObjectsWithTag查找

以上个人见解,如有疑问和不同观点,欢迎讨论

相关文章

  • Unity查找效率对比

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

  • 2020-03-29

    对于二分查找,对比递归和非递归的执行效率,理解递归调用中,压栈和弹栈也是有时间开销的。 对模糊区间查找,随机查找,...

  • Unity_VS初始化脚本模板(Script Templates

    在安装unity的目录中依次查找下面的路径Unity\Editor\Data\Resources\ScriptTe...

  • Unity优化相关文章汇总

    Unity优化的工具#韩宇飞Unity优化技巧(上) 关于获取组件GetComponent的效率问题Unity 脚...

  • Unity入门【唐老狮】(一)界面,工作原理

    Unity入门【唐老狮】 [toc] 概述 Unity环境搭建 unity引擎概念开发游戏的软件意义门槛低,效率高...

  • 查找

    静态查找顺序查找 折半查找 散列查找 动态查找二叉排序树 散列查找 ASL(平均查找长度) - 衡量查找算法效率的...

  • Unity几个Json库的序列化简单比较

    粗略需求是对比Unity自带的JsonUtility、Newtonsoft、LitJson、SimpleJson这...

  • UWA性能报告精读

    仿UWA对Unity项目进行性能分析<一> 最近在对项目的Unity部分进行性能分析,查找profiler的一些指...

  • 请问Unity3d, Cocos2d, SpriteKit这三种

    这里就拿Unity 与Cocos Creator做2D游戏来对比优劣势吧。Unity的不开源,Cocos Crea...

  • unity plugin

    Unity提高开发效率的插件集合 14个 Vectrosity:Unity3D中可以用Vectrosity插件画直...

网友评论

      本文标题:Unity查找效率对比

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