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

本文介绍在Unity中使用C#的GetComponentsInChildren方法时遇到的问题:当父对象和子对象都存在相同类型组件时,如何避免父对象组件被包含在结果中。通过创建扩展方法来解决这一问题,并讨论了方法重载中includeInactive参数的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值