UGUI之动态设置某个节点在其兄弟节点中的位置

       最近的工作任务是实现模态对话框,模态对话框弹出后要显示在最前面,为了实现这个效果,我从网上找到了解决办法: 通过SetSiblingIndex 和 GetSiblingIndex设置与获取 gameObject在兄弟节点中的位置。
      我觉得GetSiblingIndex返回就是兄弟节点对应的编号,这个编号从0开始,只要修改这个编号就可以改变这个节点在所有兄弟节点中的位置。

      假设A节点为当前节点gameObject,B节点为m_sibling
gameObject.transform.SetSiblingIndex(m_sibling.transform.GetSiblingIndex());
得到的结果是原来B的位置变成A,B紧挨着A,在A下面。

        如果想交换A和B的位置,可以先保存它们的位置:
int aIndex = gameObject.transform.GetSiblingIndex();
int bIndex = m_sibling.transform.GetSiblingIndex();
gameObject.transform.SetSiblingIndex(bIndex);
m_sibling.transform.SetSiblingIndex(aIndex);

       如果想实现模态对话框显示在最前面的效果,可以这样做:
gameObject.transform.SetSiblingIndex(gameObject.transform.parent.childCount - 1);
      首先得到当前节点的所有兄弟节点(包括自己)个数gameObject.transform.parent.childCount,因为编号从0开始,所以还要减1(经过测试,其实不减1也可以,暂时没有发现问题),设置为它的位置。
补充:
      实现显示在最前,还可以用现成的方法SetAsLastSibling与我上面的效果一样。
      相应的还有一个SetAsFirstSibling方法,是设置成第一个,也就是显示在最后面。

转载于:https://www.cnblogs.com/ylwshzh/p/4460914.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值