组
在舞台上选定一个或多个元件,然后按Ctrl+G,就可以建立一个组。 FairyGUI的组有两种类型,普通组
和高级组
。
普通组
普通组仅在编辑时有效,是辅助你进行UI设计的。普通组发布后不存在,也就是在运行时无法访问到普通组。
普通组的作用有:
- 可以整体一起移动;
- 可以整体一起调整深度;
- 可以整体复制和粘贴。
- 双击组,进入组内部后,可以随意调整各个元件的深度,不影响组外的东西。
- 当组大小改变时,组内的内容将同时增大或者缩小。普通组的属性面板:
名称
可以给普通组取名,用途也仅仅是辅助设计。
高级组
高级组除了具有普通组所有的功能外,它在发布后仍然保留,也就是在运行时可以通过代码访问高级组对象。所以它可以像一个普通元件那样设置关联和属性控制。
高级组的作用有:
- 可以设置可见性。如果组不可见,则组内的所有元件均不可见。
- 设置属性控制。高级组支持的属性控制有:显示控制,位置控制,大小控制。
- 设置关联。
- 设置布局。例如有一批元件,你希望在某一页隐藏,那么你可以对每个元件设置一次显示控制,你也可以将他们建立一个高级组,然后对高级组设置一个显示控制,后者是不是简洁很多?
高级组的属性面板:
高级组具有简单的布局功能。目前支持水平布局
和垂直布局
。
水平布局
组内的元件按照他们在容器中的显示顺序水平依次排列,他们之间的间隔由列距指定。当组的宽度改变时,每个元件都按比例增大,然后重新排列,列距保持不变。当组内的元件自身的宽度改变时,组自动按规则重新排列。垂直布局
组件的元件按照他们在容器中的显示顺序垂直依次排列,他们之间的间隔由行距指定。当组的高度改变时,每个元件都按比例增大,然后重新排列,行距保持不变。当组内的元件自身的高度改变时,组自动按规则重新排列。
以下用例子说明一下有布局和无布局的区别:
这是一个无布局的组,可以看到,组大小改变时,里面的方块大小同时改变,但位置不变。
这是一个水平布局的组,可以与上图比较一下差别。
如果组内有设置了大小限制的元件,那么组大小改变时,这些元件的大小限制依然生效,在以下的例子中,由于左右两个色块被限制了大小,所以组变大时,只有中间的色块改变大小。
GGroup
高级组可以在运行时通过代码访问。但要注意的是,组不是容器,它并没有维护一个组内元件的列表。如果你需要遍历组内的所有元件,你需要遍历容器组件的所有孩子,测试他们group属性。代码如下:
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。