当前位置: 首页 > news >正文

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&#xff0c;并展示了如何计算物件数组的长度&#xff0c;如何从物件数组中找到特定的对象&#xff0c;如何根据数组的不同参数进行排序&#xff0c;以及如何找到最大和最小值。 #include <iostream> #include <algorithm>using…...

云计算:新一代的技术革命

云计算&#xff0c;作为21世纪的一项重要技术革命&#xff0c;已在全球范围内引发了深远的影响。它改变了我们存储和处理数据的方式&#xff0c;使得企业无需再建设和维护昂贵的本地服务器和数据中心。本文将深入探讨云计算的基本概念&#xff0c;类型&#xff0c;主要优点&…...

数据结构—图的应用

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

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 模型计算中&#xff0c;预测错误&#xff1b;权重参数加载 tensorflow 模型计算主要代码&#xff08;正确代码&#xff09; linear1_kernel_initializer tf.constant_initializer(numpy.transpose(data["linear1.weight"])) linear1_bias_initializer …...

Jay17 2023.8.14日报 即 留校集训阶段性总结

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

【C语言】小游戏-扫雷(清屏+递归展开+标记)

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

云服务 Ubuntu 20.04 版本 使用 Nginx 部署静态网页

所需操作&#xff1a; 1.安装Nginx 2.修改配置文件 3.测试、重启 Nginx 4.内部修改防火墙 5.配置解析 6.测试是否部署成功 1.安装Nginx // 未使用 root 账号 apt-get update // 更新apt-get install nginx // 安装 nginx 1.1.测试是否安装没问题 在网页上输入云服务的公网…...

无后效性

动态规划的概念 在上例的多阶段决策问题中&#xff0c;各个阶段采取的决策&#xff0c;一般来说是与时间有关的&#xff0c;决策依赖于当前状态&#xff0c;又随即引起状态的转移&#xff0c;一个决策序列就是在变化的状态中产生出来的&#xff0c;故有“动态”的含义&#xf…...

Kubernetes系列-删除deployment和pod

通过deployment创建的pod直接执行delete是不会正常被删除的&#xff0c;因为deployment中设置了pod的数量&#xff0c;deployment会动态维护pod的数量&#xff0c;倘若pod数量少于约定数量&#xff0c;deployment会创建pod&#xff0c;直到pod数量达到约定数量才会停止。 如若…...

kotlin字符串方法

以下是一些常用的 String 方法示例&#xff1a; 1.获取字符串长度&#xff1a; val str "Hello, Kotlin" val length str.length2.字符串比较&#xff1a; val str1 "apple" val str2 "banana" val compareResult str1.compareTo(str2)3…...

ubuntu篇---配置FTP服务,本机和docker安装

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

SpringBoot中properties、yml、yaml的优先级

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

SHELL 基础 SHELL注释 及 执行SHELL脚本的四种方法

SHELL 脚本编写规范 &#xff1a; 脚本开头 &#xff1a; # 脚本第一行 &#xff1a; #! /bin/bash 或 #!/bin/sh &#xff08; 脚本解释器 &#xff09; # 程序段开头需要加 版本版权信息 &#xff0c;例如 &#xff1a; # Date 创建日期 # Author : 作者 # …...

【Spring】深入探索 Spring AOP:概念、使用与实现原理解析

文章目录 前言一、初识 Spring AOP1.1 什么是 AOP1.2 什么是 Spring AOP 二、AOP 的核心概念2.1 切面&#xff08;Aspect&#xff09;2.2 切点&#xff08;Pointcut&#xff09;2.3 通知&#xff08;Advice&#xff09;2.4 连接点&#xff08;Join Point&#xff09; 三、Sprin…...

LocalDate介绍和使用

1.什么是 LocalDate&#xff1f; 在我们开始之前&#xff0c;让我先简单介绍一下 LocalDate。它是 Java 8 中引入的日期类&#xff0c;用于表示不带时区信息的日期。也就是说&#xff0c;它专注于日期&#xff0c;并忽略了具体的时间。这样&#xff0c;我们就可以专心解决那些…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...

面试高频问题

文章目录 &#x1f680; 消息队列核心技术揭秘&#xff1a;从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"&#xff1f;性能背后的秘密1.1 顺序写入与零拷贝&#xff1a;性能的双引擎1.2 分区并行&#xff1a;数据的"八车道高速公路"1.3 页缓存与批量处理…...