1:相信大家都有用到GetComponentsInChildren这个方法吧?但是再用这个方法的时候,

       如果GetComponentsInChildre<T>(),

    如果父对象和子对象都存在相同的T,那么这个得到的数组也会包含父对象中的T,这个在很多情况下我们是不要的,

    那么如何解决这个问题呢?

Unity 关于GetComponentsInChildren 利用扩展方法如何避免获取父物体

Unity 关于GetComponentsInChildren 利用扩展方法如何避免获取父物体


2:解决方法

相信大家要写肯定都会啦,这里我是写了扩展方法(具体C#扩展方法,找度娘啦)

1:首先创建一个MyExtension类,不继承mono(注意static),然后写了一个方法

Unity 关于GetComponentsInChildren 利用扩展方法如何避免获取父物体

然后使用

Unity 关于GetComponentsInChildren 利用扩展方法如何避免获取父物体

Unity 关于GetComponentsInChildren 利用扩展方法如何避免获取父物体

就可以了,不过GetComponentsInChildren有个重载方法,我在这里小提一下
        public T[] GetComponentsInChildren<T>(bool includeInactive);
    这个重载,默认是false,includeInactive=true,那么在获取子对象的时候如果T对象是关闭的仍然可以得到,
如果includeInactive=false, 那么就不会获得关闭的T对象    

Unity 关于GetComponentsInChildren 利用扩展方法如何避免获取父物体  

      Unity 关于GetComponentsInChildren 利用扩展方法如何避免获取父物体

为true的时候

Unity 关于GetComponentsInChildren 利用扩展方法如何避免获取父物体

Unity 关于GetComponentsInChildren 利用扩展方法如何避免获取父物体

下面我们修改一下自己写的扩展方法(其实没啥修改QAQ)

Unity 关于GetComponentsInChildren 利用扩展方法如何避免获取父物体

然后也像原来那么用就行了哈

Unity 关于GetComponentsInChildren 利用扩展方法如何避免获取父物体

Unity 关于GetComponentsInChildren 利用扩展方法如何避免获取父物体

ok了!!!

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-07-07
  • 2021-07-18
  • 2022-12-23
  • 2021-11-09
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-19
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-16
  • 2022-12-23
相关资源
相似解决方案