Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(207评价)
优惠后 ¥1899.00优惠前 ¥2499.00 双十一全年最大力度限时优惠
1对1 答疑即时回复7天无理由退款30天价保提问必答

服务保障

1对1 答疑

提供专属的一对一在线答疑,快速答疑解惑。

即时回复

及时响应学习咨询,帮助解决问题。

7天无理由退款

购买后7天内可申请无理由退款。

30天价保

购买后30天内如遇降价,可申请价保。

提问必答

对于提问做到有问必答,帮您扫清学习过程中的种种障碍

关于GetComponentInParent的问题
sdhexu发起了话题2017-07-19
6
回复
5511
浏览

GetComponentInParent<MyComponetType>()   这个函数感觉总是莫名其妙。

我在做UI的时候,一开始用的挺好的,马上就要收工了,但是突然间,我发现它有时候会返回null,非常确定已经肯定,他的父亲是有那个组建的。我查询了一下API说明,上面说,Only component on active Game Objects are returned....

我滴个天,这句鸟语是不是说,只有在组建在活动状态的时候(没有被禁用)的时候,他才能找到???

为什么,我之前也在用这个函数,那个物体(是个UI界面)也是初始状态并不激活,他就能找到???现在却不行了?

如果确实这个原因,我如何能找到父亲的组件,即使它没有被激活仍然能找到??

所有回复
  • sdhexu • 2017-07-20

    我就是想知道,有没有能够即时物体没有激活情况下仍能获取父亲组件的方法。

    我现在的解决方法是,先用GetComponentInParent获取,如果没有获取到,就用父亲的路径去获取,像这样:

       tranform.parent.parent.parent.GetComponent();   // 这样能够获取。

    还有-5条回复,点击查看
    你还没有登录,请先登录或注册!
  • siki • 2017-07-20

    GetComponentsInParent(true)这样就会查找没有激活的物体

    还有-4条回复,点击查看
    你还没有登录,请先登录或注册!
  • sdhexu • 2017-07-21

    siki大神,没有这个重载。。GetComponentsInParent( bool ) 根本没有这个形式的重载呀。。

    只有两种形式:

    1、GetComponentsInParent( string type );

    2、GetComponentsInParent<Type>();

    没有带Bool参数的重载形式。。。。

    还有-5条回复,点击查看
    你还没有登录,请先登录或注册!
  • siki • 2017-07-22

    这个api可能实在新版本取消了

    可以使用这个GetComponentInChildren

    transform.root.GetComponentInChildren(true) true表示包含未激活的游戏物体

    • sdhexu • 2017-07-22

      这样实际上是从根部直接查找孩子。。
      但这样找到的可能不是我要的。因为具有这个组件的可能有多个,我只是想根据某个物体,找到具有某个组件它的祖先。。但他祖先不一定是被激活的。
      现在我自己用递归的方法和GetComponent函数写了一个方法。。。。
      谢谢siki

      (0) 回复
    还有-4条回复,点击查看
    你还没有登录,请先登录或注册!
发表回复
你还没有登录,请先 登录或 注册!