FGUI系统分析

​ 一、FGUI简介
全称FairyGUI,是一个开源的UI编辑器,支持多个游戏引擎的独立插件。 整个插件最大 最突出的特点:所见即所得。
官方教程:https://www.fairygui.com/docs/editor/index

二、FGUI和UGUI对比后的差异

优势
1.操作简易,使用习惯与Adobe系列软件保持一致,美术和策划都可以轻松上手。能够编辑器进行简单的测试 。
2.界面拼接制作和界面逻辑解耦,策划与美术参与到UI的制作中, 并且贯穿整个游戏开发的全程,实现UI脱离程序。
策划参与UGUI制作遇到的问题:UGUI的节点是由父子关系的, 而且程序在写逻辑代码的时候大概率会依赖于这个UI结构。所以需要策划先去学习Unity的UGUI的层级的概念, 而且还有一些复杂的结构,一般情况在策划制作完成UI之后,程序可能都需要简单的修改修改,而且策划同时还要管理Unity的UI的UI的合理规划,所以对于策划来说技术门槛有点高。目前UGUI的UI逻辑是lua依靠find写的。FGUI没有层级的概念,通过名字索引,同名编辑器有提示。
性能方面,FGUI性能优于UGUI,UGUI的层级越多越复杂DrawCall 越高,重绘的时候性能消耗越高。
3. FGUI的资源管理比较方便。划分好包就好规划。

  1. 多语言解决方案。

瑕疵
1.程序门槛增高
FGUI有自己的一套写法,已经会UGUI了,比较难接受这种全新的写法,对UGUI再封装的那种插件接受度会更高一点。如果使用FGUI,我们目前的UGUI框架要重新搭建。
2.不是很适合多人开发,可以进行轻量模块化开发。详情可以了解包的定义。
3.像机是投影模式。没有透视模式。无法单独实现3D效果。
4.相关文档很少,几乎只有官方文档。和市面上的UGUI文档根本没得比。

三、FGUI编辑器核心功能简介
编辑器布局
FGUI系统分析_第1张图片

1.元件(类似于UGUI的组件)
FGUI中最小的粒度单位。每个舞台中的组成元素我们称之为元件,如:图片、动画、装载器、文本、组、组件、滚动条、列表等
在舞台上选中任意一个元件,右边的属性栏出现共同的属性设置面板有:

2.组、组件
组:(类似于UGUI的节点)。分为普通组和高级组,普通组只起辅助管理元件的作用,程序无法通过代码找到。高级组能导出,程序能找到。
组件:(类似于UGUI的预制体)。组件是FairyGUI中的一个基础容器。组件可以包含一个或多个基础显示对象,也可以包含组件。

3.包
1).FairyGUI是以包为单位组织资源的。包在文件系统中体现为一个目录。assets目录下每个子目录都表示一个包。包内的每个资源都有一个是否导出的属性,一个包只能使用其他包设置为已导出的资源,而不设置为导出的资源是不可访问的。同时,只有设置为导出的组件才可以使用代码动态创建。
2).FairyGUI是不处理包之间的依赖关系的。例如,在Unity实际使用过程中,如果B包导出了一个元件B1,而A包的A1元件使用了元件B1,那么在创建A1之前,必须保证B包已经被载入,否则A1里的B1不能正确显示(但不会影响程序正常运行)。这个载入需要由开发者手动调用,FairyGUI不会自动载入。
3).划分包,有一个原则,就是不要建立交叉的引用关系。例如避免A包使用B包的资源,B包使用C包的资源这类情况。一般都建立一个或多个公共包,把整个项目需要频繁使用到的资源放在这里,把一些基础组件,例如按钮、滚动条等也放到这里。其他包需要使用时直接从公共包拖入就可以了。除了公共包,其他包相互之间尽量不发生引用关系。
4).图片资源尽量不要太分散,不同包的图片是不能打在同一张纹理集上的
5).每个包里都有一个package.xml文件,它是包的数据库文件。如果这个文件被破坏,那么包的内容将无法读取。在多人协作的情况下,如果在拉取package.xml时出现冲突,请先处理好冲突,再在编辑器内刷新包。
有点类似于操作Unity的预制体。

​4.装载器
装载器的用途是动态载入资源。如果图片不加装载器是不给修改和点击的!
URL指向的资源可以是图片、动画或者组件。

5.关联系统
关联系统是FairyGUI实现自动布局的核心技术。类似于UGUI的锚点系统。
UGUI的锚点系统是有层级关系。
FGUI的关联系统是可以指定关联任意元件

6. 控制器
控制器是FairyGUI核心功能之一。它为UI制作中以下类似需求提供了支持:
1)分页:一个组件可以由多个页面组成。
2)按钮状态:显示隐藏等
3)属性变化:位移旋转等

还可以结合下面的分支实现一些有意思的功能:如多语言版本解决方案。
(详情看分支)

7.分支
分支功能用于实现项目的多态设计,例如多国语言版本下UI的差别,又例如多个渠道版本下UI的差别。
分支的用途是对主干进行部分修改。我们都是首先在主干上开发,然后在项目的任何阶段,都可以建立任意多个分支。注意,它和代码仓库中的分支概念不一样。UI分支不包含主干的资源,它只放置与主干有差别的内容。
在编辑器内,分支就和包里的一个普通的文件夹没有任何区别,你可以向这个文件夹添加资源,也可以从其他地方移入或者粘贴资源,没有任何限制。按照分支的机制,分支和主干的资源只要路径和名称完全一致,他们就会自动建立一个映射关系。

UGUI多语言方案:
1).各种语言版本建立完全独立的工程
2).通过代码或者配置文件进行运行时调整
搭配控制器一起使用实现多语言多版本解决方案。

8.多国语言
对UI多国语言的支持,FairyGUI提供了这样一种方案:把界面上的所有文字导出到一个文件,然后把这个文件提交翻译,运行时动态载入翻译好的文件,由SDK完成界面文字的替换。
也就是说,FairyGUI的方案是先拼界面,再翻译;

9.发布,导入与导出
FGUI的包发布之后会产生两类文件:一个描述文件(二进制文件)和一张或多张纹理集。
可以将部分资源导出为一个资源包,也可以导入资源包。


分支发布处理方式有两种:
1.合并发布
2.只发布选中的分支。主干和分支分开。

四、Unity 上使用FGUI
1.手动设置,
在Hierarchy面板,右键,选FairyGUI,点UIPanel,可以实例化一个UIPanel出来。
左边选择的是我们的包名,右边是包里包含的每一个资源(FGUI里面的组件)。


​2.代码动态生成​​

你可能感兴趣的:(FGUI,unity,lua,ugui,ui)