UG4L9-5——组

本章代码关键字

1
2
3
4
5
6
GGroup                //高级组类
gObject.asGroup //将元件类对象as成高级组类对象的属性
gGroup.visible //控制高级组内所有元素的显隐
gGroup.layout //高级组的布局方式
GroupLayoutType //组的布局方式枚举
gObject.group //该元件属于哪个组

组是组件内用于可以批量管理元件和控件的特殊对象
它可以统一管理多个元件和控件的移动、显影、复制粘贴等等

组的创建

在舞台上选定一个或多个元件、控件,然后Ctrl+G,就可以建立一个组了
FairyGUI的组分为两种:普通组和高级组

普通组相关

普通组仅在编辑时有效,辅助UI设计,发布后不存在
作用:

  1. 整体移动
  2. 整体调整深度
  3. 整体复制粘贴
  4. 双击组进入内部,可随意调整各元件深度
  5. 组大小改变时,组内内容将同时增大或缩小

强调:它主要起辅助功能,进入Unity后没有任何意义

高级组相关

高级组除了包含普通组功能外,它发布后仍然保留,可以通过代码获取设置
作用:

  1. 统一设置可见性
  2. 设置位置,大小
  3. 设置关联
  4. 设置布局

image

  • 无:没有布局,不会自动计算包围,效率高,
    这种组一般就是用来控制显隐
  • 水平布局:组内元件在容器中顺序水平依次排列,缩放时按比例增大
  • 垂直布局:组内元件在容器中顺序垂直依次排列,缩放时按比例增大
  • 行列距表示布局时元件的间隔距离
  • 排除隐藏对象:勾选后,隐藏对象不会参与排列
  • 禁用自动计算包围:勾选后,如果向组内添加删除元素
    将不会改变组的大小,而是调整组内元素的大小

Unity中使用高级组

  1. 获取高级组对象

    1
    GGroup gGroup = view.GetChild("group1").asGroup;
  2. 控制位置和显隐

    1
    2
    gGroup.y = 0;
    gGroup.visible = true;
  3. 改变布局

    1
    gGroup.layout = GroupLayoutType.Horizontal;
  4. 注意:无法通过组获取子对象
    如果想要判断面板组件下哪些控件在组内,只有通过遍历组件下所有子对象 判断它是否属于组

  5. 设置元件属于某一组

    1
    2
    3
    GImage image = UIPackage.CreateObject("teach", "ui_TY_biaotilan_01").asImage;
    view.AddChild(image);
    image.group = gGroup;
  6. 判断元件是否属于某一组

    1
    2
    3
    4
    5
    for (int i = 0; i < view.numChildren; i++)
    {
    if (view.GetChildAt(i).group == gGroup)
    print(view.GetChildAt(i).name + "在" + gGroup.name + "组中");
    }