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了!!!