【Unity之FGUI】黑神章Fairy GUI控件详解

在这里插入图片描述


👨‍💻个人主页:@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创
👨‍💻 收录于专栏:就业宝典

🅰️推荐专栏

⭐-软件设计师高频考点大全



文章目录

    • 前言
    • 🪶 FGUI控件 详解【一】
      • 😶‍🌫️字体控件注意事项
      • 😶‍🌫️1.普通文本控件
      • 😶‍🌫️2.富文本控件
      • 😶‍🌫️3.输入文本控件
      • 😶‍🌫️4.组控件
      • 😶‍🌫️5.控制器(组件的一个功能)
      • 😶‍🌫️6.关联系统(组件的一个功能)
      • 😶‍🌫️7.标签(组件的一个功能)
    • 🅰️


前言

FGUI是一种用于游戏开发的GUI系统。它是一种轻量级的UI系统,具有高性能和可扩展性。FGUI使用自定义的UI编辑器来创建和管理UI界面,开发者可以使用编辑器中提供的各种组件和布局来设计和排版UI界面。FGUI还支持多分辨率适配和多语言本地化,使开发者能够轻松地创建适应不同设备和语言环境的UI界面。FGUI可以与各种游戏引擎和开发工具集成,如Unity和Cocos2d-x,使其可以在不同平台上使用。


🪶 FGUI控件 详解【一】


😶‍🌫️字体控件注意事项


导入字体资源包后,还需在项目设置中,进行路径填写,才可以选择显示

在这里插入图片描述

  • 1.系统字体(不建议使用)

  • 2.TTF字体(常用)支持ttf/ttc/otf字体文件
    发布后,字体文件不会被发布,需要自己手动将字体文件放置到引擎中Unity Resources或者Resources/Fonts目录下

字体设置
在这里插入图片描述

①系列:字体名称,只读
②采样字体大小:渲染方式为SDFAA才有意义,其它方式使用默认值16即可
③渲染方式
Smooth:抗锯齿,建议使用
Hinted Smooth:比Smooth更清晰,速度较慢,较小字体建议使用
SDFAA:使用SDF技术渲染字体,TextMeshPro时可使用
④斜体样式:SDFAA时才有,使用斜体时的倾斜角度15~60
⑤粗体分量:SDFAA时才有,使用粗体时,粗体的重量,-3~3


3.位图字体(特殊需求时使用)
位图字体就是使用图片来表示某个文字

在这里插入图片描述

首先需要导入字体图片然后,导入到位图字体编辑器中

在这里插入图片描述
而后就形成了一个字体包,可以放入文字中使用

注意:默认字体

//2.默认字体需要自己手动设置//设置默认字体 要在显示面板之前//如果是放置在指定文件夹下 那么直接填写字体名即可UIConfig.defaultFont = "STHUPO";//如果没有放到指定路径下UIConfig.defaultFont = "Other/STHUPO";//3.如果字体文件放置在AB包中或者Resources下其他目录下,需要手动自己注册//手动从对应位置加载字体文件 Font font = Resources.Load<Font>("Other/STCAIYUN");//然后申明一个 动态字体类型对象DynamicFont dFont = new DynamicFont("STCAIYUN", font);//注册它FontManager.RegisterFont(dFont);//设置适配相关GRoot.inst.SetContentScaleFactor(1365, 768, UIContentScaler.ScreenMatchMode.MatchHeight);//包和依赖包的加载UIPackage package = UIPackage.AddPackage("UI/Teach");foreach (var item in package.dependencies){UIPackage.AddPackage(item["name"]);}GComponent view = UIPackage.CreateObject("Teach", "TeachPanel").asCom;GRoot.inst.AddChild(view);#endregion#region 知识点三 字体相关问题解决//1.字体不带加粗 可以手动设置//FontManager.GetFont("字体名").customBold = true;//2.斜体和粗体不能同时使用 如果已经设置了customBold 不用设置customBoldAndItalic//FontManager.GetFont("字体名").customBoldAndItalic = true;//3.如果要使用TextMeshPro 需要在Unity编辑器的Scripting Define Symbols里增加 FAIRYGUI_TMPRO
//1.手动设置字体格式
//FontManager.GetFont("字体名").customBold = true;
//2.使用TextMeshPro 
//Unity编辑器的Scripting Define Symbols增加 FAIRYGUI_TMPRO

😶‍🌫️1.普通文本控件


    普通文本负责文本的显示功能不支持交互(鼠标触摸感应)、超链接和图文混排、HTML语法

在这里插入图片描述


在这里插入图片描述

  • 支持UBB语法

在这里插入图片描述

显示图片:[img]ui://包名/图片名[/img]_富文本才支持
超链接:[url=网址]超链接[/url]_富文本才支持
字体:[font=字体名]字体[/font]
字体大小:[size=10]text[/size]
粗体:[b]123[/b]
斜体:[i]123[/i]
下划线:[u]123[/u]
颜色:[color=#FFFFFF]123[/color]
[color=#FFFFFF,#000000]文字[/color] 两个颜色上下过渡
[color=#FFFFFF,#CCCCCC,#000000,#FFFF00]文字[/color]四个颜色可以做左右过渡或者双方向过渡

  • 支持文字模板

钻石数量:
{H=100}红钻{Y=200}银钻

在这里插入图片描述

 //1.获取文本GTextField text = view.GetChild("字体控件名").asTextField;text.text = "设置文字内容";//2.对齐方式text.align = AlignType.Left;text.verticalAlign = VertAlignType.Middle;//3.单行显示并设置大小text.singleLine = true;text.textFormat.size = 50;//4.动态创建文本GTextField txt = new GTextField();txt.SetSize(100, 100);txt.text = "哈喽·";view.AddChild(txt);//5.修改文本样式txt.texttxt.textFormat.size txt.textFormat.color//6.文本模板设置GTextField txt = view.GetChild("txtInfo").asTextField;//方式一:txt2.SetVar("jin", "500");txt2.SetVar("yin", "1000");txt2.FlushVars();//方式二:Dictionary<string, string> xxx = new Dictionary<string, string>();dic.Add("jin", "10000");dic.Add("yin", "1");txt2.templateVars = xxx;//7.关闭模板功能txt2.templateVars = null;

😶‍🌫️2.富文本控件


HTML语法点击进入

1.图片
<img src='ui://包名/图片名/>
<img src='ui://包名/图片名' width='20' height='20'/>
<img src='ui://包名/图片名' width='50%' height='50%'/>
2.超链接:
<a href='链接地址'>链接名字</a>
HtmlParseOptions.DefaultLinkColor = ...; //设置链接颜色
HtmlParseOptions.DefaultLinkBgColor = ...;
HtmlParseOptions.DefaultLinkHoverBgColor = ...;
  • 富文本支持交互(鼠标/触摸)
    • 富文本支持超链接和图文混排
      • 富文本支持HTML语法在这里插入图片描述
        在这里插入图片描述
    //1.获取富文本GRichTextField richTxt = view.GetChild("控件名").asRichTextField;richTxt.text = "";//2.动态创建富文本GRichTextField richTxt2 = new GRichTextField();richTxt2.SetSize(100, 100);richTxt2.SetPosition(20, 20, 0);richTxt2.text = "<a herf='www.baidu.com'>超链接3</a>";view.AddChild(richTxt2);//3.点击相关richTxt.onClick.Add(Click);richTxt.onClick.Add(() => {print("点击2");});richTxt.onClick.Remove(Click);richTxt.onClick.Clear();//4.超链接点击相关richTxt.onClickLink.Add((obj) =>{print(obj.data.ToString());});}
    //HTML超链接样式 //1.全局设置HtmlParseOptions.DefaultLinkUnderline = true;HtmlParseOptions.DefaultLinkColor = Color.red;HtmlParseOptions.DefaultLinkBgColor = Color.green;HtmlParseOptions.DefaultLinkHoverBgColor = Color.yellow;//2.单个富文本设置HtmlParseOptions options = richTxt.richTextField.htmlParseOptions;options.linkUnderline = false;options.linkColor = Color.green;options.linkBgColor = Color.red;

😶‍🌫️3.输入文本控件


在这里插入图片描述

  • 输入限制:正则表达式规则
  • 键盘类型:在手机上输入时是手机键盘类型
 //1.获取输入文本控件GTextInput input = view.GetChild("inputTxt").asTextInput;//2.控件相关APIinput.text = "输入的字符串";input.maxLength = 20; //最大长度input.displayAsPassword = false; //密码开关input.restrict = ""; //输入限制input.keyboardType = 0; //键盘类型input.promptText = "请输入密码"; //提示内容input.SetSelection(0, 4); //设置当前输入框选中的字符串范围//3.事件监听相关input.onChanged.Add(() =>{print(input.text);});//4.焦点事件监听input.onFocusIn.Add(() =>{print("焦点进入");});input.onFocusOut.Add(() =>{print("焦点离开");});//主动设置焦点input.RequestFocus();//输入完成事件监听(设置为单行时PC上有用)input.onSubmit.Add(() =>{print("输入完成" + input.text);});

😶‍🌫️4.组控件


  • 组是组件内用于可以批量管理元件和控件的特殊对象,统一管理多个元件

相当于变成一个对象的子对象的统一管理

在舞台上选定一个或多个元件、控件,然Ctrl+G,建立成组
在这里插入图片描述

在这里插入图片描述

  • 排除隐藏对象:勾选后,隐藏对象不会参与排列
 //1.获取高级组对象GGroup g = view.GetChild("group1").asGroup;//2.相关APIg.y = 0; //设置位置g.visible = false; //设置显隐g.layout = GroupLayoutType.Horizontal; //改变布局
//3.判断归属GImage img = UIPackage.CreateObject("包名", "组名").asImage;view.AddChild(img);//设置该元件属于某一组img.group = g;for (int i = 0; i < view.numChildren; i++){//我们只有通过这种遍历的方式 找到 组件中的 元件 是否在某一个组当中if( view.GetChildAt(i).group == g ){print(view.GetChildAt(i).name + "在组当中" + g.name);}}

😶‍🌫️5.控制器(组件的一个功能)


核心功能之一:如按钮就用到了控制器

  • 1.分页功能:一个组件可以切换不同的页面
    在这里插入图片描述

  • 2.按钮状态: 按钮通常有按下、鼠标悬浮等多个状态,我们可以利用控制器为每个状态安排不同的显示内容

  • 3.属性变化:利用控制器,我们可以使元件具有多个不同的形态,并且可以方便地切换

在这里插入图片描述

  • 导出为组件属性:可以在组件属性上面显示
  • 分页功能的切换:有以下功能
    在这里插入图片描述
      //1.获取控制器GComponent controller = view.GetChild("controllerTest").asCom;Controller c = controller.GetController("myController");//2.控制器重要APIc.selectedIndex = 1;       //通过切换控制器页签  会触发事件        c.selectedPage = "page2";  //通过名字去切换页签 会触发事件c.SetSelectedIndex(1);     //通过索引切换不会触发事件  c.SetSelectedPage("page2");//通过名字去切换页签 不会触发事件GearBase.disableAllTweenEffect = true;关闭所有控制器的缓动播放//3.控制器事件相关c.onChanged.Add(() =>//控制器变化时监听{print("切换页签");});c.SetSelectedIndex(1);      GObject obj = controller.GetChild("bk");obj.onGearStop.Add(() =>//控制器有缓动效果 缓动结束后事件监听{print("结束缓动");});

😶‍🌫️6.关联系统(组件的一个功能)


类似于UGUI中的九宫格锚点,但是FGUI操作有点麻烦

  • 默认为左边的为控件的方位,右边为容器的就是组件的方位
    在这里插入图片描述

FairyGUI实现自动布局的核心技术

  • 快捷按钮
    在这里插入图片描述
  //1.设置关联obj.AddRelation(view, RelationType.Left_Left);obj.AddRelation(view, RelationType.Top_Top);//2.删除关联obj.RemoveRelation(view, RelationType.Left_Left);obj.RemoveRelation(view, RelationType.Top_Top);obj.relations.ClearAll();  //移除和所有对象的关联obj.relations.ClearFor(view);  //移除和指定对象的所有关联

😶‍🌫️7.标签(组件的一个功能)


标签主要是由文本和图片组成 ,是一个组合控件(组件)

  • 用途: 当我们需要在UI中使用图片+文字的组合显示时

  • 规则:组成完整标签的两部分

1.文本:可以是普通文本、富文本、标签、按钮 ——元件名字一定为title(自动)

2.图片:装载器、标签、按钮——元件名字一定为icon

在这里插入图片描述
在这里插入图片描述

  • 将标签拖到组件上之后,即可一键设置在这里插入图片描述
//1.获取标签控件GLabel label = view.GetChild("标签名").asLabel;label.text = "";label.icon = "ui://xx/xxxx";GObject obj = view.GetChild("标签名");obj.text = "";obj.icon = "ui://xx/xxx";//2.标签控件常用APIlabel.GetChild("title").asTextField; //获取title使用他的APIlabel.GetChild("icon").asLoader//获取icon使用他的APIlabel.titleColor; //文本颜色label.titleFontSize = 30;//文本大小

🅰️


⭐【Unityc#专题篇】之c#进阶篇】

⭐【Unityc#专题篇】之c#核心篇】

⭐【Unityc#专题篇】之c#基础篇】

⭐【Unity-c#专题篇】之c#入门篇】

【Unityc#专题篇】—进阶章题单实践练习

⭐【Unityc#专题篇】—基础章题单实践练习

【Unityc#专题篇】—核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!


在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/333129.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

宝塔下新增站点 No Input File Specified.错误修复

今天明月收到了一个购买【站长必备在线工具源码含上百款工具-博客优化修复版】用户的求助&#xff0c;在宝塔里新增网站部署好工具源码后&#xff0c;访问出现“No input file specified.”的提示。其实出现这个提示一般都是 PHP 文件无法被解析造成的。 简单排查了一下宝塔相关…

python技巧梳理

背景 在开发中&#xff0c;经常会遇到&#xff0c;同时存在多个值&#xff0c;依次判断上述值&#xff0c;选择第一个非空、True的值作为整个表达式的值进行返回&#xff0c;这个时候会用到or这个关键词&#xff0c;下面讲一下用法。 方法 value1 None value2 0 value3 H…

教师专属的成绩发布小程序

还在为成绩发布而烦恼&#xff1f;还在担心家长无法及时获得孩子的学习反馈&#xff1f;是否想要一个既安全又高效的工具来简化你的教学工作&#xff1f;那么&#xff0c;易查分小程序可能是你一直在寻找的答案。 现在的老师们有了超多的工具来帮助我们减轻负担&#xff0c;提高…

快速搭建 WordPress 外贸电商网站指南

本指南全面解析了在 Hostinger 平台上部署 WordPress 外贸电商网站的详细步骤&#xff0c;涵盖托管方案选择、WordPress 一键安装、主题挑选与演示数据导入、主题个性化定制、SEO插件插件 AIOSEO 安装、通过 GTranslate 实现多语言自动翻译、地区访问控制插件&#xff0c;助力用…

【C++练级之路】【Lv.21】C++11——列表初始化和声明

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、列表初始化1.1 内置类型1.2 结构体或类1.3 容器 二、声明2.1 auto2.2 decltype2.3 nullptr 三、STL的…

最新dofm飞行棋高阶版,分享情侣版飞行棋高级版和终极版

阿星今天要给大家带来一款甜蜜蜜的小游戏——情侣飞行棋。这不是普通的飞行棋&#xff0c;而是专为情侣设计的&#xff0c;让你们的感情在游戏中升温&#xff0c;擦出更多爱的火花。 准备好了吗&#xff1f;跟着阿星一起&#xff0c;咱们来看看这款软件的魅力所在&#xff01;…

2024最新机器人相关基础技术总结(1)

机器人分类 功能分类&#xff1a;工业机器人&#xff0c;服务机器人&#xff0c;移动机器人&#xff08;AGV&#xff09; 机器人系统组成 组成部分&#xff1a;机器人本体、伺服电机、减速机、伺服驱动器、IO板、控制系统、其他电子元器件。 逐一分析&#xff1a; 本体 机…

抖音小店出单之后怎么发货?抖店详细发货流程来了

大家好&#xff0c;我是喷火龙。 抖音小店发货是有规则的&#xff0c;如果出现超时发货或者虚假发货都会被平台处罚的&#xff0c;会影响我们店铺的评分和正常运营&#xff0c;还有些小伙伴们在发货的时候会遇到平台的违规提醒等问题。 今天我就给大家讲一下抖音小店的发货流…

深度神经网络——什么是决策树?

决策树 决策树是一种强大的机器学习算法&#xff0c;它通过模拟人类决策过程来解决分类和回归问题。这种算法的核心在于它如何将数据集细分&#xff0c;直至每个子集足够“纯净”&#xff0c;即包含的实例都属于同一类别或具有相似的数值范围。 开始于根节点&#xff1a;决策…

推荐3款好用的AI智能写作工具

AI智能写作如今已经很成熟了&#xff0c;不仅有很多AI综合大模型可以实现AI写作&#xff0c;还有很多专门针对AI写作场景专门研发的垂直领域工具。 如果你在工作学习中也想提高写作效率&#xff0c;不妨试试下面3个国内可直接登录使用的AI写作工具&#xff0c;其中不乏有简单易…

【openlayers系统学习】3.1-3.2彩色GeoTIFF图像渲染

一、彩色GeoTIFF图像渲染 Sentinel-2 卫星任务收集并传播覆盖地球陆地表面的图像&#xff0c;重访频率为 2 至 5 天。传感器收集多波段图像&#xff0c;其中每个波段都是电磁频谱的一部分。 2A 级 (L2A) 产品提供以下频段的表面反射率测量&#xff1a; BandDescriptionCentra…

SQLI-labs-第二十五关和第二十五a关

目录 第二十五关 1、判断注入点 2、判断数据库 3、判断表名 4、判断字段名 5、获取数据库的数据 第二十五a关 1、判断注入点 2、判断数据库 第二十五关 知识点&#xff1a;绕过and、or过滤 思路&#xff1a; 通过分析源码和页面&#xff0c;我们可以知道对and和or 进…

集智书童 | YOLOv10开源|清华用端到端YOLOv10在速度精度上都生吃YOLOv8和YOLOv9

本文来源公众号“集智书童”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;YOLOv10开源&#xff5c;清华用端到端YOLOv10在速度精度上都生吃YOLOv8和YOLOv9 在过去几年中&#xff0c;YOLO系列模型已成为实时目标检测领域的主导范式…

小程序内使用路由

一:使用组件 1)创建组件 2)在需要的页面的json/app.json可实现局部使用和全局使用 在局部的话,对象内第一层,window配置也是第一层,而在全局配置也是在第一层,window在window对象内.第二层.内部执行遍历不一样. 3)页面使用 上述所写可实现在页面内使用组件.效果是页面内可以将…

面试被问到不懂的东西,是直接说不懂还是坚持狡辩一下?

大家好&#xff0c;我是瑶琴呀。 面试被问到不懂的东西&#xff0c;是直接说不懂还是坚持狡辩一下&#xff1f;这个问题可以转变一下&#xff0c;如果你顺利拿到 offer&#xff0c;公司安排的工作跟你之前的技术和经验不匹配&#xff0c;你还愿意干下去吗&#xff1f; 转变一…

HC32F103BCB使用SPI获取AS5040编码器数据

1.AS5040介绍 2.硬件电路 硬件上使用SSI通信方式连接。 3.配置硬件SPI 查看手册&#xff0c;AS5040时序 可以看到在空闲阶段不发生数据传输的时候时钟(CLK)和数据(DO)都保持高电位(tCLKFE阶段)&#xff0c;在第一个脉冲的下降沿触发编码器载入发送数据&#xff0c;然后每一个…

什么是线程安全?如何保证线程安全?

目录 一、引入线程安全 &#x1f447; 二、 线程安全&#x1f447; 1、线程安全概念 &#x1f50d; 2、线程不安全的原因 &#x1f50d; 抢占式执行&#xff08;罪魁祸首&#xff0c;万恶之源&#xff09;导致了线程之间的调度是“随机的” 多个线程修改同一个变量 修改…

VGG论文解析—Very Deep Convolutional Networks for Large-Scale Image Recognition

VGG论文解析—Very Deep Convolutional Networks for Large-Scale Image Recognition -2015 研究背景 大规模图像识别的深度卷积神经网络 VGG&#xff08;牛津大学视觉几何组&#xff09; 认识数据集&#xff1a;ImageNet的大规模图像识别挑战赛 LSVRC-2014&#xff1a;Image…

生产制造边角料核算说明及ODOO演示

今天群里有伙伴提到边角料的处理问题&#xff0c;我们梳理了一下&#xff0c;在生产过程中&#xff0c;如果产生了边角料&#xff0c;核算产成品的投料成本时需要考虑边角料的价值&#xff0c;以确保成本核算的准确性。以下是注意的几点&#xff1a; 一、边角料的入账价值 在生…

「云渲染课堂」3dmax地砖材质参数怎么让画面更加真实?

在3DMAX中&#xff0c;地砖材质的渲染需要细致的调整&#xff0c;因为不同材质的地砖在反射和折射参数上各不相同。为了使地砖材质更加逼真&#xff0c;以下简要说明了一些设置方法&#xff0c;希望对大家有所帮助&#xff01; 3dmax地砖材质参数如何设置 1、打开材质编辑器&a…