24.GGroup组

24.FGUI基础-控件-组


24.1 知识点

组是什么

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

组的创建

  • 在舞台上选定一个或多个元件、控件,然后Ctrl+G,或者点击组合按钮,就可以建立一个组了
  • FairyGUI的组分为两种:普通组和高级组
  • 双击组进入组的内部,调整组内元件或控件

普通组相关

  • 普通组仅在编辑时有效,辅助UI设计,发布后不存在
  • 作用:
    • 整体移动
    • 整体调整深度
    • 整体复制粘贴
    • 双击组进入内部,可随意调整各元件深度
    • 组大小改变时,组内内容将同时增大或缩小
  • 强调:它主要起辅助功能,进入Unity后没有任何意义

高级组相关

  • 高级组除了包含普通组功能外,它发布后仍然保留,可以通过代码获取设置
  • 作用:
    • 统一设置可见性
    • 设置位置,大小
    • 设置关联
    • 设置布局

高级组参数相关


  • 布局:高级组具有简单的布局功能。
    • 无:没有布局,不会自动计算包围,效率高,这种组一般就是用来控制显影隐
    • 水平布局:组内元件在容器中顺序水平依次排列,缩放时按比例增大
    • 垂直布局:组内元件在容器中顺序垂直依次排列,缩放时按比例增大
  • 行列距:表示布局时元件的间隔距离
  • 排除隐藏对象:勾选后,隐藏对象不会参与排列
  • 禁用自动计算包围:一般情况下,有布局的高级组是自动计算包围的,也就是说,高级组的大小由组内元素决定。勾选这个选项后,高级组的大小就可以随意指定,不再受组内元素的影响。这用于实现这样一类需求:动态建立一个高级组,设定了固定大小后,无论往组里添加多少元件,这些元件都自动伸缩,且严格按布局排列。如果你需要对组的大小对容器做宽高关联,这里一定要勾选。
  • 仅伸缩指定索引元件:一般情况下,有布局的高级组在拉伸时,组内的元素是均匀拉伸的。但在某些需求下,会要求只有一个元件拉伸,而其他元件大小保持不变。这里可以指定这样一个元件的索引实现需求。索引从0开始。

Unity中使用高级组

设置组件并发布

基础包和组件面板的导入

//基础包和组件面板的导入
//设置默认字体
UIConfig.defaultFont = "Other/STHUPO";
//设置超链接字体颜色
HtmlParseOptions.DefaultLinkColor = Color.red;
//基础包和组件面板的导入
//设置适配相关
GRoot.inst.SetContentScaleFactor(1365, 768, UIContentScaler.ScreenMatchMode.MatchHeight);
//当前包和依赖包的加载
UIPackage package = UIPackage.AddPackage("UI/FGUI教程");
foreach (var item in package.dependencies)
{
    UIPackage.AddPackage("UI/" + item["name"]);
}
//创建组件对象 要设置为导出
GComponent view = UIPackage.CreateObject("FGUI教程", "Lesson24_FGUI基础_控件_组").asCom;
//添加到根对象
GRoot.inst.AddChild(view);

获取高级组对象

//1.获取高级组对象
GGroup gGroup = view.GetChild("group1").asGroup;

高级组的主要作用

//2.高级组的主要作用
//设置位置
gGroup.y = 0;
//设置显隐
//gGroup.visible = false;
//改变布局
gGroup.layout = GroupLayoutType.Horizontal;
//注意:无法通过组获取子对象
//如果想要判断面板组件下哪些控件在组内
//只有通过遍历组件下所有子对象 判断它是否属于组
GImage img = UIPackage.CreateObject("Teach", "ui_TY_biaotilan_01").asImage;
view.AddChild(img);
//设置该元件属于某一组
img.group = gGroup;
//遍历组件下所有子对象
for (int i = 0; i < view.numChildren; i++)
{
    //我们只有通过这种遍历的方式 找到 组件中的 元件 是否在某一个组当中
    if( view.GetChildAt(i).group == gGroup )
    {
        print(view.GetChildAt(i).name + "在组当中" + gGroup.name);
    }
}

运行结果


24.2 知识点代码

using FairyGUI;
using FairyGUI.Utils;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson24_FGUI基础_控件_组 : MonoBehaviour
{
    void Start()
    {
        #region 知识点一 组是什么?
        //组是组件内用于可以批量管理元件和控件的特殊对象
        //它可以统一管理多个元件和控件的移动、显影、复制粘贴等等
        #endregion

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

        #region 知识点三 普通组相关

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

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

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

        #endregion

        #region 知识点四 高级组相关

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

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

        #endregion

        #region 知识点五 Unity中使用高级组

        //基础包和组件面板的导入
        //设置默认字体
        UIConfig.defaultFont = "Other/STHUPO";
        //设置超链接字体颜色
        HtmlParseOptions.DefaultLinkColor = Color.red;
        //基础包和组件面板的导入
        //设置适配相关
        GRoot.inst.SetContentScaleFactor(1365, 768, UIContentScaler.ScreenMatchMode.MatchHeight);
        //当前包和依赖包的加载
        UIPackage package = UIPackage.AddPackage("UI/FGUI教程");
        foreach (var item in package.dependencies)
        {
            UIPackage.AddPackage("UI/" + item["name"]);
        }
        //创建组件对象 要设置为导出
        GComponent view = UIPackage.CreateObject("FGUI教程", "Lesson24_FGUI基础_控件_组").asCom;
        //添加到根对象
        GRoot.inst.AddChild(view);


        //1.获取高级组对象
        GGroup gGroup = view.GetChild("group1").asGroup;

        //2.高级组的主要作用
        //设置位置
        gGroup.y = 0;
        //设置显隐
        //gGroup.visible = false;
        //改变布局
        gGroup.layout = GroupLayoutType.Horizontal;
        //注意:无法通过组获取子对象
        //如果想要判断面板组件下哪些控件在组内
        //只有通过遍历组件下所有子对象 判断它是否属于组
        GImage img = UIPackage.CreateObject("Teach", "ui_TY_biaotilan_01").asImage;
        view.AddChild(img);
        //设置该元件属于某一组
        img.group = gGroup;
        //遍历组件下所有子对象
        for (int i = 0; i < view.numChildren; i++)
        {
            //我们只有通过这种遍历的方式 找到 组件中的 元件 是否在某一个组当中
            if( view.GetChildAt(i).group == gGroup )
            {
                print(view.GetChildAt(i).name + "在组当中" + gGroup.name);
            }
        }

        #endregion
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏