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

Unity FairyGUI笔记

跨引擎UI工具,首先我想到,做好的面板不合适要在工具里调整,重新导出、导入,是否需要两个软件和代码编辑器都开着?如果再开一个教程的浏览器,内存是否够用?要么只开一个,两个软件轮流打开?

基本概念

上来我们会遇到大量概念:

编辑器里的Package、Component。

Unity API里的

UIPackage、UIPanel、GRoot、GComponent、GObject

Package

含有多个Component(面板预制体)和美术资源的资源包,类比AB包去理解。

Component

一个面板。

编辑器

轴心0,0代表左上角。未勾选作为锚点时轴心只是旋转中心,锚点还是左上角,勾选后位置是轴心相对于面板左上角的位置(和UGUI一样)。

最小尺寸、最大尺寸:

作为子对象时的限制。

API

常用方法:

  1. UIPackage.AddPackage(packageName);加载包

  2. UIPackage.CreateObject(packageName, componentName);加载组件

  3. GRoot.inst.AddChild(component);加给根

  4. component.GetChild("元件名");得到元件

常用组件类:

  1. GComponent

  2. GImage

  3. GGraph图形

  4. GMovieClip序列帧动画

  5. GLoader装载器

得到使用GetChile().as元件类型。创建使用UIPackage.CreateObject("包名", "组件名").as类型名,除了图形用graph=new GGraph();然后component.AddChild(graph);

查看gObject的游戏对象

gObject.displayObject.gameObject

调整分辨率适配

void SetScale(int width, int height){GRoot.inst.SetContentScaleFactor(width, height,UIContentScaler.ScreenMatchMode.MatchHeight);// GRoot.inst.AddChild();}

加载包及其依赖包

void LoadPackage(string packageName){UIPackage package = UIPackage.AddPackage(packageName);//从Resources加载//AddPackage只有用到才会加载资源// package.LoadAllAssets();//加载所有资源foreach (var i in package.dependencies){UIPackage.AddPackage(i["name"]);//加载依赖包}}

通过UIPanel加载面板

void LoadUIPanel(string name, string packageName, string componentName){GameObject obj = new GameObject(name);obj.layer = LayerMask.NameToLayer("UI");FairyGUI.UIPanel panel = obj.AddComponent<FairyGUI.UIPanel>();panel.packageName = packageName;panel.componentName = componentName;panel.CreateUI();panel.container.renderMode = RenderMode.ScreenSpaceOverlay;panel.container.fairyBatching = true;panel.SetHitTestMode(HitTestMode.Default);}

通过GComponent加载面板:CreateObject输入包名、组件名,AddChild加给根。

void LoadPanel(string packageName, string componentName){GComponent component = UIPackage.CreateObject(packageName, componentName).asCom;GRoot.inst.AddChild(component);}

UIPackage.CreateObject填包名和包里的组件、资源名。

通过GComponent异步加载面板:在委托里加给根。

void LoadPanelAsync(string packageName, string componentName){UIPackage.CreateObjectAsync(packageName, componentName, (obj) =>{GComponent component = obj.asCom;GRoot.inst.AddChild(component);});}

GetChild("元件名");得到元件。这里是序列帧动画。

GMovieClip clip = component.GetChild("n8").asMovieClip;//填在组件里的名字nX

GetChild填组件里的元件名:

创建一个序列帧动画。

GMovieClip clip2 = UIPackage.CreateObject(packageName,"Zombie").asMovieClip;
GRoot.inst.AddChild(clip2);
clip2.SetPosition(0, 0,0);

这些组件名、元件名都要去FairyGUI编辑器里看,Unity里看不到。

http://www.dtcms.com/a/414603.html

相关文章:

  • 【qml-11】Quick3D实现机器人欧拉旋转、拖动视角
  • 垂直网站建设步骤在线海报设计网站
  • PHP 8.2 vs PHP 8.3 对比:新功能、性能提升和迁移技巧
  • 做的好的阅读类的网站有哪些外贸seo软件
  • 安装MariaDB服务器流程介绍在Ubuntu 22.04系统
  • Windows环境下PDF批量打印的轻量级实现方案
  • 花箱 东莞网站建设9420高清完整版视频在线观看1
  • 响应式设计 手机网站html5 网站源码
  • 下载| Windows 11 ARM版9月官方ISO系统映像 (适合部分笔记本、苹果M系列芯片电脑、树莓派和部分安卓手机平板)
  • 2018年企业网站优化如何做网站 内容优化
  • windows系统电脑远程登录ubuntu系统电脑
  • 【算法】——分治思想与快速排序的实践应用
  • JavaScript ES5 vs ES6 核心特性对比
  • three.js
  • PyQt和Qt、PyQt和PySide的关系
  • 网站开发工具与技术企业网站空间在哪里
  • 网站开发一个页面多少钱天堂网
  • 为软件“分家”:组件化治理大型工程的艺术
  • Windows 系统部署 阿里团队开源的先进大规模视频生成模型 Wan2.2 教程——基于 EPGF 架构
  • 建站之星建出来的网站如何上传请写出网站建设的步骤
  • 金融门户网站建设搜索引擎优化公司排行
  • 【AI】详解BERT的输出张量pooler_output
  • Leecode hot100 - 39. 组合总和
  • 网站建设方案书 广东开发公司成本部职责岗位职责和流程
  • MySQL笔记10
  • Python快速入门专业版(四十八):Python面向对象之多态:不同对象调用同一方法的不同实现(实战案例)
  • C# HttpListener 服务器上无法访问端口
  • [创业之路-605]:半导体行业供应链
  • SpringAOP面向切面编程
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(36):文法運用