起因:项目UI使用的是Fairygui,现在优化要把页面的设计分辨率调整小一些,即所有的组件和图片资源都需要对应调整小一些。因为我们如果仅是把所有资源缩放的话页面上面的显示的组件位置其实是混乱的。所以现在就需要批量调整资源大小和位置。
环境:Unity2019.4.10f1 Fairygui 2022.1.0p1
需求是是要把所有界面和组件按照从 1080x2160 到 720x1440 的等比缩小并放在合适的位置。
所以,首先要解决的问题是,怎么批量修改组件。
使用Fairygui的开发者应该都知道Fairygui的页面组件信息都存在xml文件里面吧。
如下图,资源信息都会存在 package.xml 文件内,组件信息都会存在对应的组件名.xml文件里面。
那么怎么解析xml文件呢。
首先分析一下xml文件的结构,如上图,看起来都是很规则的。所以,我们可以用正则来匹配找出对应的字段,修改字段即可。
当然这都是大佬的做法,像我这种不要很熟悉正则的开发者还是选择翻源码,毕竟作者写了xml,自己肯定也要拿来用,作者怎么解析我们蹭几句就行了。
所以我们找到了Fairygui的解析方式,还挺多,自己写估计得个把月。
这里,基本方案就已经确定了,解析xml,修改xml文件里面对应组件的size(大小)和x,y(位置)
大概思路如下
//通过把.xml文件解析成XML文件,然后修改对应的属性即可。
public static void ChangeXmlPos(XML source)
{
var hassize = false;
var lastsizevalue = "";
var hasxy = false;
var lastxyvalue = "";
fo