欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

解决在Unity中使用FairyGUI遇到的坑

程序员文章站 2022-07-02 20:09:33
首先!首先!首先!首先,我们由于历史问题,项目用的ui编辑器不是大众使用的gui或者ngui, 而是使用不知道算不算小众的fairygui,这个ui系统使用挺方便的,也提供了很多ui编码的案例,至少从...

首先!首先!首先!

首先,我们由于历史问题,项目用的ui编辑器不是大众使用的gui或者ngui, 而是使用不知道算不算小众的fairygui,这个ui系统使用挺方便的,也提供了很多ui编码的案例,至少从直接使用来说方便了不少。

但是!但是!但是!

可能用到这个ui编辑器的不是那么多,项目上遇到的问题在网上百度出来的结果很少,基本自己断点查找bug。

最后!最后!最后!

我这个从没写过几次技术博客的人,要写这篇技术贴的原因是:昨晚加班到四五点钟查找bug回到屋里,发现由于没有关好自己卧室的门,室友养的猫进我屋里尿了我一床,所以不得不马上更换棉被,才取睡觉!

1.关于在fairygui中使用unity项目里的sprite问题

在fairygui中使用unity的sprite需要使用控件gloader来装载sprite.官方给予的使用方法是

如果sprite是在一个sprite图集中,则需要重写自己的gloader类,

并且注册自己的gloader

但是这里并没有告诉我们该怎样具体加载sprite.

实际上只需要自己查找到sprite载入就行

但是如果sprite是在一个图集中,图片就显示不正确了。

查找了很久才发现fairygui使用的图集和unity中使用的图集y轴相反,需要重新计算rect才能正确加载。即

基本上这样子就解决了gloader使用unity的sprite 问题。

2.使用sprite atlas打包图集遇到的问题

由于美术给予的图片都是单个的图片,并没有将打包成为一张图片,所以需要程序自行打包。在多次询问谷哥和度娘以后,才知道unity有个新的图集打包插件sprite atlas很好使用

1.创建sprite atlas:

解决在Unity中使用FairyGUI遇到的坑

2.选择需要打包的图片或者图片所在的文件夹

(这里会将文件夹内的图片和子文件夹内的图片一起打包)

也可以打包预制体

解决在Unity中使用FairyGUI遇到的坑

3.设置在编辑器模式下也可以使用打包功能

解决在Unity中使用FairyGUI遇到的坑

这里就已经完成图集打包了。

一切似乎都很完美,图片显示,打包都有了。

但是!但是!但是

图集+gloader显示图片后,图片显示不出来了,

查了很久才知道

我tm一万匹*奔过,这tm也是我昨晚查了一晚上,debug了好久查找怎么正确获取texturerect,或者说能正常显示图片。

我发现如果要显示图片可以使用ggraph:

但是这里装载的asprite是一个gameobject对象,相当于我创建了一个gameobject挂载到了fairygui上。

这里我不可能1.将所有的gloader改成ggraph吧,2.为每张需要用到的图片创建gameobject吧。

后来根据官方的案例发现可以,

但是这里加载的texture2d是整个图片,如果是图片中的某块区域(图集中的一张图片)则无法正常显示。

最后我发现,在创建sprite atlas时,取消勾选tight packing(取消紧凑打包),属性texturerect就可以正常获取了。

解决在Unity中使用FairyGUI遇到的坑

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。

相关标签: Unity FairyGUI