版权声明:本文为博主原创文章,未经博主允许不得转载。https://mp.youkuaiyun.com/postedit/82223258
这里简单介绍一下自己看了几天对FairyGUI的一些认识,以及对和UGUI一样,理解的Text,NGraphic,Image,Shape这几个类的主要功能。只要是关于在Unity里面的使用,这里只是写一下自己对源码的一些认识和理解,有错误的地方,还希望大家给出意见。
一:参考的地址链接
官方地址:http://www.fairygui.com/以及UnityPackage包地址:https://github.com/fairygui/FairyGUI-unity/releases可以下载关于Unity里面各个版本支持的FairyGUI的SDK。
二:编辑器功能以及介绍
首先是编辑器下载,直接官方文档进行下载。以及了解编辑器常用的功能也是参考上面的官方文档。了解编辑器操作和一些概念和流程制作。
这里介绍一些简单布局操作面板,主要工具栏:主工具栏,库面板,侧工具栏。制作时常用的组件比如文本,滚动列表,滑动条,图片Image。这些官方文档都有介绍,这里就不着重进行介绍了。
三:编辑器到运行时创建流程
启动创建组件UIPanel为例
Start()方法启动-----UIPanel
CreateUI_PlayMode()
GComponent组件创建 UIPackage.CreateObject(string pkgName, string resName)
CreateObject(PackageItem item, System.Type userClass) 创建组件 里面有ConstructFromResource()方法接着解析创建
GetItemAsset(PackageItem item) 根据PackageItemType创建
LoadComponentChildren()根据XML解析出信息进行创建组件
UIObjectFactory.NewObject()根据类型new 出相应的类比如GCompont,GImage走对应类里面的构造方法
Image.Create先走构造方法 LatestGraphicsCreation现在创建到第几个组件
驱动更新Update
StageEngine继承自Monbehaviour
LateUpdate()更新驱动Stage.inst.InternalUpdate() stage舞台继承自Container容器是一个承载器
Container.Update(_updateContext)更新要更新的上下文信息 遍历所有的Children.Count驱动每个DisplayObject.Update
DisplayObject.Update(context)展示对象的Update
执行到Image.Update(context)调用基类的Update 更新材质,更新Mesh,画图形了
Rebuild()进行重建 都有标志位进行过滤提升性能 _requireUpdateMesh是否要求更新Mesh数据
重建清除模式,根据填充方式,进行顶点填充。
PackageItem 描述包里面组件的信息基本会把信息存在一个XML里面,到运行时进行解析
四:重要组件的介绍
- 介绍组件之前介绍,先介绍一下组件之间的继承体系。让更清楚类之间的关系
上面两层是FairyGUI核心事件系统,处理显示对象可以接收来自鼠标和键盘响应的事件,做出注册委托的事件处理。
IEventDispatcher接口
public interface IEventDispatcher
{
void AddEventListener(string strType, EventCallback0 callback);
void AddEventListener(string strType, EventCallback1 callback);
void RemoveEventListener(string strType, EventCallback0 cal