FairyGUI 导入 Unity 进行交互
⭐️Transition中添加标签以及在unity中实现回调(Animation中的Event)
ListView 的实现
列表属性的条目资源关联,不设置会导致无法加载
FairyGUI 编辑器中可以设置预览,但切记勾选发布时取消,否则运行时也会被渲染
SetVirtual 和 SetVirtualAndLoop 的区别
核心设置代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14void Start()
{
mainUI = this.GetComponent<UIPanel>().ui;
list = this.mainUI.GetChild("listView").asList;
this.list.SetVirtual(); //设置虚拟列表,以实现动态滑动
this.list.itemRenderer = RenderListItem;
this.list.numItems = 5;
}
private void RenderListItem(int index, GObject obj)
{
GButton button = obj.asButton;
button.title = index.ToString();
}
Loader 加载器实现动态加载包资源
确保加载的图片资源在 FairyGUI 中设置为“导出”
核心代码
1
2
3
4GLoader loaderImg = this.mainUI.GetChild("loader").asLoader;
// "ui://pkg_demo/res/img_headicon.png" 此处资源绝对路径如左所标志
// 可知 GetItemURL 接口中的参数,resName 不需要考虑相对路径关系
loaderImg.url = UIPackage.GetItemURL("pkg_demo", "img_headicon");
ProgressBar 自动导出后的异常处理
生成的 CS 脚本中
title = (GTextField)GetChildAt(1);
代码段其实是一场的,根据 index 获取的其实是 image 对象,导致强转失败。
考虑到不处理 Plugin 下 Component.GatherVariable 方法,将 ProgressBar 组件下的两张 Image 重命名为 bg 和 fg 解决 child 索引错误问题。
QA
FairyGUI 导出后,Unity 是从哪边触发脚本 AutoGen 的?
同一个pkg下,如果有多个Panel,PanelId自动生成的枚举只能生成一个?
FairyGUI 编辑器中,只发布自己当前编辑点 pkg,如果点击发布全部,会导致工程中触发的FUIAutoGen把所有FUI相关的文件都进行修改
FairyGUI编辑器中发布完后,Unity触发脚本FUICodeSpawner.FUICodeSpawn()