zoukankan      html  css  js  c++  java
  • 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方法,是设置成第一个,也就是显示在最后面。
  • 相关阅读:
    左眼右眼
    Mac 的“任务管理器” —— 活动监视器
    [分享] VIM 常用命令及游戏练级
    iOS 7 如何关闭已打开的应用(App)
    iPhone 如何设置彩信 ?
    JavaScript —— attachEvent 方法的使用
    习惯&感恩
    MySQL 基础 备份和恢复
    Python 数据结构 树
    Python 正在表达式
  • 原文地址:https://www.cnblogs.com/ylwshzh/p/4460914.html
Copyright © 2011-2022 走看看