Fairy下载和使用
写在最前:本系列中将会涉及到 Unity,C#,Lua和FairyGUI(FGUI)。
FairyGUI介绍
官网: FairyGUI
编辑器下载: FairyGUI
截至文档记录最新版: https://res.fairygui.com/FairyGUI-Editor_2022.1.0p1.zip
编辑器使用教程: FairyGUI
Unity版教程配套示例资源下载:
Master:https://github.com/fairygui/FairyGUI-unity/archive/refs/heads/master.zip
Release:https://github.com/fairygui/FairyGUI-unity/archive/refs/tags/4.3.0.zip
FairyGUI是游戏开发领域中制作UI的一个利器。它支持Unity,Cocos2dx,Egret,LayaAir,Cocos Creator等,基本上国内主流的引擎都支持了。而且使用FGUI编辑器制作UI的效率非常高,它有很多独特的功能,比如控制器,关联系统,分包,分支等,全部零代码,方便策划或者美术快速上手搭建UI。
获取FairyGUI Unity SDK
下载配套的示例资源并解压到合适的位置。使用Unity打开示例demo,工程Unity版本:2018.4.29f1,建议使用对应Unity的版本或更高的版本打开。我手头目前使用的是Unity2021.3.26f1。打开后可以看到如下图所示的目录结构:
将“Extensions”,“Resources”和“Scripts”拷贝到自己项目Assets下的一个空文件夹下如“FGUI”,即可为自己的项目引入FairyGUI库。
注意:FairyGUI支持TextMeshPro,所以在“FairyGUI-TMP.shader”文件中要注意“TextMesh Pro Shaders”的引用。
FairyGUI编辑器的概念词
1、包:FairyGUI是以包为单位组织资源的。包在文件系统中体现为一个目录。assets目录下每个子目录都表示一个包。默认情况下包和包之间无法建立依赖关系,需要包下面的资源设置为“导出”,才可以被其他包使用。包的定义
2、舞台:舞台是组件的编辑区域。中间区域就是舞台
3、元件:每个舞台中的组成元素我们称之为元件,元件的类型有很多,他们是:
- 基础元件:图片、图形、动画、装载器、文本、富文本、组、组件。
- 组合型元件:标签、按钮、下拉框、滚动条、滑动条、进度条。
- 特殊元件:列表。
- 在舞台上选中任意一个元件,右边的属性栏(检测器)会出现当前元件的属性数据。元件详情
4、组件:组件是FairyGUI中的一个基础容器。组件可以包含一个或多个基础显示对象(元件),也可以包含组件。组件详情
- 组件的创建:在资源库中右键“xx包”,即可在当前包下面创建组件。
5、右键导出:资源库中的资源设置为导出后,才能被其他包引用,以及在代码中动态的获取。设置为导出的资源会有红点提示。右键导出
6、发布:发布有三种方式:全部发布,仅发布定义和发布。全部发布和发布就字面意思,发布全部包和发布当前活跃包。而当资源越来愈多的时候,一个包的发布时间会越来越长,这时如果我们只是修改了界面参数,那就可以使用仅发布定义来跳过资源纹理集的重新生成。这样子可以提高发布速度。详情在主工具栏
7、更多的请阅读更加具体的编辑器使用教程
创建Unity工程
1、创建一个Unity,导入FairyGUISDK。
注意:在导入FairyGUISDK后如果出现Shader报错,请检查“Window→TextMeshPro”是否存在,如果不存在尝试导入TextMeshPro支持库。
如果存在,请尝试查找工程中是否存在“TMPro_Properties”文件,找不到的话请执行“Window→TextMeshPro→Import TMP Essential Resources”,之后修改报错的位置,将TMPro_Properties和TMPro的引用指向正确位置。
FairyGUI项目创建、配置和发布
1、下载并解压FairyGUI编辑器,双击“FairyGUI-Editor.exe”打开。
2、(可选)点击“文件→切换颜色空间”,将UI编辑器的颜色空间和引擎中的设置一样。Linear 和 Gamma 两种,后面也可以切换。
3、点击“创建新项目”,会弹出创建项目窗口,这里可以设置项目的名字、位置和类型。这里我使用的引擎是Unity,项目位置建议放置到工程的Assets同级目录中,方便后期管理。点击“创建”进入正式的UI编辑窗口中。
4、编辑窗口中,“资源库”存放所有的资源和UI,毕竟UI也是资源。资源库中默认会有个“Package1”包,“Package1”包下存在一个被导出的组件“Component1”。按照项目的习惯重命名包和组件。比如我习惯在组件名字前使用UI来表示这个组件是UI界面,Comp开头表示这是个UI中的自定义组件需要代码操作,其他命名则为默认,之后的发布代码插件会详细说明。这里使用Test作为测试示例。
改之前的:
改之后的:
5、点击“文件→发布设置”菜单,可以设置项目资源包的发布路径,发布路径分为包设置和全局设置,包设置中可以为当前选中活跃包设置单独的发布路径,默认“使用全局配置”。
6、点击“全局设置”。
发布路径中支持相对路径,如果你的FGUI工程和Assets同级目录,那你的发布路径可以设置为“../Assets/UI存放路径”,这时候点击发布或全部发布,就可以在你UI存放路径的文件夹下发现一堆FGUI生成出来的二进制文件和相关的纹理集等,UI存放路径根据自己的项目文件结构来。这里我测试在Resources下新建一个UI文件夹来存放所有的UI,发布路径:../Assets/Resources/UI
发现一堆资源后,想将一堆的资源按包分类可以在发布路径后面加{publish_file_name},这时候再次点击发布后,生成文件就会按钮当前文件所在的包进行划分。发布路径:../Assets/Resources/UI/{publish_file_name}
注意:发布出来的资源只会同名覆盖,而不会删除。也就是说如果文件A被你在FGUI工程中删除了,之前在UI存放路径下的文件A还是存在的。
7、回到Unity中,在“Hierarchy”面板中右键点击“FairyGUI→UI Panel”,创建UI面板。
8、选中UIPanel,点击“Inspector”面板中的“Package Name”会出现之前导出的UI资源,依次点选“Test”和“UITest”后点击OK即可在场景中查看UITest。
注意:
1、如果这时候Game窗口出现了双重UI,请检查是否有多个相机同时渲染了UI层级。建议使用默认FairyGUI相机“Stage Camera”渲染UI即可。
2、如果Game窗口没有显示UI,运行后也没有显示,则排查一下UI界面是否有内容显示,以及当前Unity版本中是否需要将UI相机加入到主相机的“Stack”列表中。
这篇文章只是粗略的概括一下FGUI的UI导出和展示流程,详细的UI制作可以查看编辑器使用教程
相关文章:

Fairy下载和使用
写在最前:本系列中将会涉及到 Unity,C#,Lua和FairyGUI(FGUI)。 FairyGUI介绍 官网: FairyGUI 编辑器下载: FairyGUI 截至文档记录最新版: https://res.fairygui.com/FairyGUI-Ed…...

隧道HTTP优化程序示例
作为专业爬虫程序员,我们经常需要使用代理服务器处理大量的请求。但是,单一服务器往往无法承担高并发请求和HTTPS加密的压力,这时候我们可以利用CDN来优化性能,并实现反向代理和HTTPS加速。下面,让我们一步步来了解。 …...
Flink源码之State创建流程
StreamOperatorStateHandler 在StreamTask启动初始化时通过StreamTaskStateInitializerImpl::streamOperatorStateContext会为每个StreamOperator 创建keyedStatedBackend和operatorStateBackend,在AbstractStreamOperator中有个StreamOperatorStateHandler成员变量…...

selenium常见等待机制及其特点和使用方法
目录 1、强制等待 2、隐式等待 3、显示等待 1、强制等待 强制等待是在程序中直接调用Thread.sleep(timeout) ,来完成的,该用法的优点是使用起来方便,语法也比较简单,缺点就是需要强制等待固定的时间,可能会造成测试的时间过…...
C++物件数组的常用方法介绍
以下代码建立了一个物件数组Student,并展示了如何计算物件数组的长度,如何从物件数组中找到特定的对象,如何根据数组的不同参数进行排序,以及如何找到最大和最小值。 #include <iostream> #include <algorithm>using…...
云计算:新一代的技术革命
云计算,作为21世纪的一项重要技术革命,已在全球范围内引发了深远的影响。它改变了我们存储和处理数据的方式,使得企业无需再建设和维护昂贵的本地服务器和数据中心。本文将深入探讨云计算的基本概念,类型,主要优点&…...

数据结构—图的应用
6.4图的应用 概念回顾—生成树 生成树:所有顶点均由边连接在一起,但不存在回路的图。 一个图可以有许多棵不同的生成树、含有n个顶点 n-1 条边的图不一定是生成树所有生成树具有以下共同特点 生成树的顶点个数与图的顶点个数相同;生成树是图的…...

Unity 鼠标控制 UI 放大、缩小、拖拽
文章目录 1. 代码2. 测试场景 1. 代码 using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems;public class UIDragZoom : MonoBehaviour, IDragHandler, IScrollHandler {private Vector2 originalSize;private Vector2 originalPosition;private RectTr…...
tensorflow 模型计算中,预测错误;权重参数加载
tensorflow 模型计算中,预测错误;权重参数加载 tensorflow 模型计算主要代码(正确代码) linear1_kernel_initializer tf.constant_initializer(numpy.transpose(data["linear1.weight"])) linear1_bias_initializer …...

Jay17 2023.8.14日报 即 留校集训阶段性总结
8.14 打了moeCTF,还剩一题ak Web。 Jay17-集训结束阶段性总结: 集训产出: 自集训开始以来一个半月,最主要做的事情有三。 一是跟课程,复习学过的知识,学习新的知识;目前课程已大体听完&…...

【C语言】小游戏-扫雷(清屏+递归展开+标记)
大家好,我是深鱼~ 目录 一、游戏介绍 二、文件分装 三、代码实现步骤 1.制作简易游戏菜单 2. 初始化棋盘(11*11) 3.打印棋盘(9*9) 4.布置雷 5.计算(x,y)周围8个坐标的和 6.排查雷 <1>清屏后打印棋盘 <2>递归展开 <3>标记雷 四、完整代…...

云服务 Ubuntu 20.04 版本 使用 Nginx 部署静态网页
所需操作: 1.安装Nginx 2.修改配置文件 3.测试、重启 Nginx 4.内部修改防火墙 5.配置解析 6.测试是否部署成功 1.安装Nginx // 未使用 root 账号 apt-get update // 更新apt-get install nginx // 安装 nginx 1.1.测试是否安装没问题 在网页上输入云服务的公网…...
无后效性
动态规划的概念 在上例的多阶段决策问题中,各个阶段采取的决策,一般来说是与时间有关的,决策依赖于当前状态,又随即引起状态的转移,一个决策序列就是在变化的状态中产生出来的,故有“动态”的含义…...
Kubernetes系列-删除deployment和pod
通过deployment创建的pod直接执行delete是不会正常被删除的,因为deployment中设置了pod的数量,deployment会动态维护pod的数量,倘若pod数量少于约定数量,deployment会创建pod,直到pod数量达到约定数量才会停止。 如若…...
kotlin字符串方法
以下是一些常用的 String 方法示例: 1.获取字符串长度: val str "Hello, Kotlin" val length str.length2.字符串比较: val str1 "apple" val str2 "banana" val compareResult str1.compareTo(str2)3…...

ubuntu篇---配置FTP服务,本机和docker安装
ubuntu篇---配置FTP服务 一、本机安装1.1 安装FTP服务器软件1.2 配置FTP服务 二、docker安装(我用的这个)2.1 创建 目录2.2 启动脚本2.3 访问2.4 如何创建一个新的用户2.5 测试2.6 使用 一、本机安装 1.1 安装FTP服务器软件 ubuntu安装vsftp sudo apt…...

SpringBoot中properties、yml、yaml的优先级
原理 配置优先级低的会先加载然后会被配置优先级高的覆盖 验证 创建SpringBoot项目(网址) 在resource目录下创建application.properties、application.yml、application.yaml文件 运行 结论 优先级顺序: properties>yml>yaml...

SHELL 基础 SHELL注释 及 执行SHELL脚本的四种方法
SHELL 脚本编写规范 : 脚本开头 : # 脚本第一行 : #! /bin/bash 或 #!/bin/sh ( 脚本解释器 ) # 程序段开头需要加 版本版权信息 ,例如 : # Date 创建日期 # Author : 作者 # …...

【Spring】深入探索 Spring AOP:概念、使用与实现原理解析
文章目录 前言一、初识 Spring AOP1.1 什么是 AOP1.2 什么是 Spring AOP 二、AOP 的核心概念2.1 切面(Aspect)2.2 切点(Pointcut)2.3 通知(Advice)2.4 连接点(Join Point) 三、Sprin…...
LocalDate介绍和使用
1.什么是 LocalDate? 在我们开始之前,让我先简单介绍一下 LocalDate。它是 Java 8 中引入的日期类,用于表示不带时区信息的日期。也就是说,它专注于日期,并忽略了具体的时间。这样,我们就可以专心解决那些…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...

Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...

【iOS】 Block再学习
iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...
Python学习(8) ----- Python的类与对象
Python 中的类(Class)与对象(Object)是面向对象编程(OOP)的核心。我们可以通过“类是模板,对象是实例”来理解它们的关系。 🧱 一句话理解: 类就像“图纸”,对…...

GraphRAG优化新思路-开源的ROGRAG框架
目前的如微软开源的GraphRAG的工作流程都较为复杂,难以孤立地评估各个组件的贡献,传统的检索方法在处理复杂推理任务时可能不够有效,特别是在需要理解实体间关系或多跳知识的情况下。先说结论,看完后感觉这个框架性能上不会比Grap…...

鸿蒙Navigation路由导航-基本使用介绍
1. Navigation介绍 Navigation组件是路由导航的根视图容器,一般作为Page页面的根容器使用,其内部默认包含了标题栏、内容区和工具栏,其中内容区默认首页显示导航内容(Navigation的子组件)或非首页显示(Nav…...