在舞台上选定一个或多个元件,然后按Ctrl+G,就可以建立一个组。 FairyGUI的组有两种类型,普通组高级组

普通组

普通组仅在编辑时有效,是辅助你进行UI设计的。普通组发布后不存在,也就是在运行时无法访问到普通组。

普通组的作用有:

  • 可以整体一起移动;
  • 可以整体一起调整深度;
  • 可以整体复制和粘贴。
  • 双击组,进入组内部后,可以随意调整各个元件的深度,不影响组外的东西。
  • 当组大小改变时,组内的内容将同时增大或者缩小。普通组的属性面板:

组 - 图1

  • 名称 可以给普通组取名,用途也仅仅是辅助设计。

高级组

高级组除了具有普通组所有的功能外,它在发布后仍然保留,也就是在运行时可以通过代码访问高级组对象。所以它可以像一个普通元件那样设置关联和属性控制。

高级组的作用有:

  • 可以设置可见性。如果组不可见,则组内的所有元件均不可见。
  • 设置属性控制。高级组支持的属性控制有:显示控制,位置控制,大小控制。
  • 设置关联。
  • 设置布局。例如有一批元件,你希望在某一页隐藏,那么你可以对每个元件设置一次显示控制,你也可以将他们建立一个高级组,然后对高级组设置一个显示控制,后者是不是简洁很多?

高级组的属性面板:

组 - 图2

高级组具有简单的布局功能。目前支持水平布局垂直布局

  • 水平布局组内的元件按照他们在容器中的显示顺序水平依次排列,他们之间的间隔由列距指定。当组的宽度改变时,每个元件都按比例增大,然后重新排列,列距保持不变。当组内的元件自身的宽度改变时,组自动按规则重新排列。

  • 垂直布局组件的元件按照他们在容器中的显示顺序垂直依次排列,他们之间的间隔由行距指定。当组的高度改变时,每个元件都按比例增大,然后重新排列,行距保持不变。当组内的元件自身的高度改变时,组自动按规则重新排列。

以下用例子说明一下有布局和无布局的区别:

这是一个无布局的组,可以看到,组大小改变时,里面的方块大小同时改变,但位置不变。

组 - 图3

这是一个水平布局的组,可以与上图比较一下差别。

组 - 图4

如果组内有设置了大小限制的元件,那么组大小改变时,这些元件的大小限制依然生效,在以下的例子中,由于左右两个色块被限制了大小,所以组变大时,只有中间的色块改变大小。

组 - 图5

GGroup

高级组可以在运行时通过代码访问。但要注意的是,组不是容器,它并没有维护一个组内元件的列表。如果你需要遍历组内的所有元件,你需要遍历容器组件的所有孩子,测试他们group属性。代码如下:

  1. GGroup aGroup = gcom.GetChild("groupName").asGroup;
    int cnt = gcom.numChildren;
    for(int i=0;i<cnt;i++)
    {
    if(gcom.GetChildAt(i).group==aGroup)
    Debug.Log("get result");
    }

必须注意,对于没有布局的高级组,运行时是不会自动改变大小的,也就是无论组内的元素怎么变动,这种高级组的大小是不会自动改变的! 如果确实需要改变,那么只能自行调用GGroup.EnsureBoundsCorrect。