Unity FairyGUI(一)

一.加载UI包

  • 可以从Resources加载
  • 可以从AssetBundle加载

* 注意的问题,从AssetBundle中加载需要注意释放和加载,如果自己管理,需要特别注意

FGUI文档介绍加载卸载以及内存管理

public class Lesson7 : MonoBehaviour
{private void Start(){// =============方法一:从Resources加载=============// 将导出的UI文件放入Resources目录或者其子目录下// 使用FairyGUI提供的 API加载对应UI// AddPackage会先使用传入的路径作为key进行检测,如果这个包已经添加了 不会重复添加// 直接填写包名即可 不需要加_fui(UI/包名)var package1 = UIPackage.AddPackage("UI/Package1");//遍历依赖包相关信息foreach (var dependenciePack in package1.dependencies){UIPackage.AddPackage(dependenciePack["name"]);}//=============方法二:从两个AssetBundle包加载=============//将定义文件和图集资源分别放入两个AssetBundle文件中//自己去加载对应的AB包//AddPackage在加载AB包时没有排重检测机制,需要自己判断//自己去判断 AB包 是否重复加载AssetBundle resAB = null;AssetBundle bytesAB = null;UIPackage.AddPackage(bytesAB, resAB);//=============方法三:从一个AB包加载=============//将定义文件和图集打入一个AssetBundle文件中//AddPackage在加载AB包时没有排重检测机制,需要自己判断AssetBundle AB = null;UIPackage.AddPackage(AB);#region 知识点五 卸载UI包//当一个包不在使用时,可以卸载//包卸载后,所有包里的贴图等资源均会被卸载,创建出来的组件也无法显示//一般不建议包进行频繁装载卸载,因为每次装载卸载必然是要消耗CPU时间(意味着耗电)和产生大量GC的。//UI系统占用的内存是可以精确估算的,你可以按照包的使用频率设定哪些包是常驻内存的(建议尽量多)。UIPackage.RemovePackage("Teach");UIPackage.RemoveAllPackages();#endregion#region 知识点六 包内存管理//1.AddPackage只有用到才会载入贴图、声音等资源。//如果你需要提前全部载入package1.LoadAllAssets();//2.如果UIPackage是从AssetBundle中载入的,在RemovePackage时AssetBundle才会被Unload(true)。//如果你确认所有资源都已经载入了(例如调用了LoadAllAssets),也可以自行卸载AssetBundle。//如果你的ab是自行管理,不希望FairyGUI做任何处理的,可以设置UIPackage.unloadBundleByFGUI为false。UIPackage.unloadBundleByFGUI = false;#endregion}}

二.UIPanel加载

public class Lesson8 : MonoBehaviour
{void Start(){UIPackage.AddPackage("Package1");var go = new GameObject("UIPanel");var uiPanel = go.AddComponent<UIPanel>();uiPanel.packageName = "Package1";uiPanel.componentName = "LearnFGUI";uiPanel.SetHitTestMode(HitTestMode.Raycast);uiPanel.SetSortingOrder(100,true);uiPanel.container.renderMode = RenderMode.ScreenSpaceCamera;uiPanel.container.renderCamera = null;uiPanel.container.fairyBatching = false;uiPanel.CreateUI();}
}
  • 当渲染模式为世界空间时,需要如下图设置

三.动态创建UI

如何选择使用UIPanel还是动态创建?

  • 当创建的是3DUI或者一开始就要显示的UI时可以使用UIPanel
  • 当正式的项目中使用动态创建UI的方式更方便管理UI
    *注意FGUI不要和GameObject有牵连,销毁UI使用内置的Dispose方法
public class Lesson9 : MonoBehaviour
{void Start(){//设置屏幕自适应GRoot.inst.SetContentScaleFactor(1365,768,UIContentScaler.ScreenMatchMode.MatchHeight);var pack = UIPackage.AddPackage("Package1");foreach (var item in pack.dependencies){UIPackage.AddPackage(item["name"]);}var com = UIPackage.CreateObject("Package1", "LearnFGUI").asCom;GRoot.inst.AddChild(com);//销毁Panelcom.Dispose();UIPackage.CreateObjectAsync("Package1", "LearnFGUI", (Gobj) =>{var com1 = Gobj.asCom;GRoot.inst.AddChild(com1);//Component属性com1.x = 10;com1.y = 10;com1.SetPosition(10,10,0);com1.width = 1000;com1.height = 900;com1.SetSize(1365,768);com1.SetPivot(0,0,true);com1.rotation = 90f;com1.sortingOrder = 1;com1.opaque = true;print(com1.numChildren);print(com1.GetChild("n1"));print(com1.GetChildAt(4));//升序,大的先渲染com1.childrenRenderOrder = ChildrenRenderOrder.Ascent;// //降序// com1.childrenRenderOrder = ChildrenRenderOrder.Descent;// //拱形// com1.childrenRenderOrder = ChildrenRenderOrder.Arch;//com1.apexIndex = 5;});}
}

四.相关脚本

1.Stage Camera

2.UIContentScaler

在设置UI自适应时,已经默认添加了这个脚本,若果需要也可自行添加

3.UIConfig

设置全局配置

Unity FairyGUI(一)相关推荐

  1. Unity FairyGUI(十二)

    Unity FairyGUI(十二) 一.树 添加节点已经在树里了才能使用,也就是已经AddChild了. GTree目前不支持虚拟化 初始化结点最好通过(一下这种方式初始化) aTree.treeN ...

  2. [Unity][FairyGUI]场景中龙骨骨骼动画设置播放

    Spine和DragonBones都是FairyGUI可以显示的骨骼动画. DragonBones骨骼动画显示. 首先得在Unity项目中配置 DragonBones的SDK. 在FairyGUI编辑 ...

  3. [Unity][FairyGUI]富文本改变颜色

    在FGUI编辑器中 设置了之后才可以 ... using FairyGUI; ... GTextFiled text1; ...text1.text = "测试[color=#123456] ...

  4. Unity FairyGUI 自适应扩展

    Attention 不能对非全屏大小的做自适应,那种可以用关联去处理就好了 如:非全屏的:GComponent(包括Window) 只要满足全屏大小的就OK. (后面有时间再写一个对Window的处理 ...

  5. [FairyGUI][Unity]加载FGUI打包成AB包的资源

    参考资料3 将发布后的文件打包为两个AssetBundle,即定义文件和资源各打包为一个bundle(desc_bundle+res_bundle).这样做的好处是一般UI的更新都是修改元件位置什么的 ...

  6. [FairyGUI][Unity]FGUI资源打包AssetBundle

    参考资料3 将发布后的文件打包为两个AssetBundle,即定义文件和资源各打包为一个bundle(desc_bundle+res_bundle).这样做的好处是一般UI的更新都是修改元件位置什么的 ...

  7. Steam项目推进(二)—— 在项目中使用FairyGUI

    一.遇到的问题 昨天把代码大致清理了一遍之后,发现代码中存在很大的一个问题是数据和表现耦合在一起了,如下: using UnityEngine; using UnityEngine.UI;public ...

  8. Java –显示所有ZoneId及其UTC偏移量

    一个Java 8示例,显示所有ZoneId及其偏移时间和分钟. PS已通过Java 8和12测试 1.显示ZoneId和偏移量 DisplayZoneAndOffSet.java package co ...

  9. 【Unity自己写框架】FairyGUI UI框架(一)

    笔者之前沉迷游戏无法自拔,但是现在之前玩的游戏也不太爱玩了,发现下班到睡觉之前有2-3个小时空闲,仿佛发现了一笔宝贵的财富不能浪费. 笔者从事手游工作也有两年的时间了,主要做的是逻辑和SDK方面的工作 ...

最新文章

  1. 企业应用架构模式学习笔记
  2. 后台开发实用书籍--后台开发:核心技术与应用实践
  3. php怎么把文字改成黑色,微信如何调成黑色模式?
  4. nacos 怎么配置 里的配置ip_Nacos-服务注册地址为内网IP的解决办法
  5. Oracle EBS-SQL (QA-1):检查超出检验周期的检验数据.sql
  6. VTK:可视化算法之LOxSeeds
  7. 好代码是管出来的——使用GitHub
  8. 【VB.NET】VB.NET基本数据类型
  9. surface pro 5 加AD域后,人脸识别选项是灰色按钮,无法使用
  10. 【Unity】4.5 树木创建器
  11. 大数据平台由哪些分析功能
  12. 递归下降分析程序的设计和实现
  13. python处理excel文件视频教程_(python处理excel文件视频教程)python怎么读取excel文件...
  14. VxWorks Fuzzing 之道:VxWorks 工控实时操作系统漏洞挖掘调试与利用揭秘
  15. python uwsgi_python,uwsgi_安装uwsgi时报错,python,uwsgi - phpStudy
  16. 中标麒麟linux系统安装打印机_中标麒麟Linux操作系统和理光打印机完成互相兼容认证...
  17. 整合腾讯云地图的绘制和编辑几何图形
  18. Netlink的简单例子
  19. 为什么说“公有云”起家的青云科技是“混合云”第一股?
  20. STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记四(5):系统滴答定时器

热门文章

  1. Symbian OS 开发初级手册(转)
  2. 基于JAVAWeb商铺租赁管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
  3. 研究显示每天工作超8小时得心脏病几率增加80%
  4. SQL2005安装图解教程
  5. 双评价技术指南2020_“双评价”技术指南(11月份版)解读
  6. 电脑技巧:进程管理工具Process Explorer介绍
  7. 计算年增长率c语言用scanf,[转]c语言scanf终极研究
  8. Golang语言全栈开发视频教程全集
  9. 批处理常用命令总结和WindowsXP下运行命令使用大全及优化
  10. MySQL添加用户及用户权限管理