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

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

       如果GetComponentsInChildre<T>(),

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

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


2:解决方法

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

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

然后使用

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

 

      

为true的时候

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

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

ok了!!!