UG4L18——分支
UG4L18——分支
本章代码关键字
1 | UIPackage.branch //修改FGUI显示的分支 |
分支功能
分支功能用于实现项目的多态设计,例如多国语言版本下UI的差别,又例如多个渠道版本下UI的差别
FairyGUI中提供了分支方案,帮助我们快捷的解决这些问题
FGUI中分支的机制
分支的用途是对主干进行部分修改,我们都是首先在主干上开发,然后在项目的任何阶段,都可以建立任意多个分支
注意:它和代码仓库中的分支概念不一样。UI分支不包含主干的资源,它只放置与主干有差别的内容
这种机制不但作用于图片,也同样作用于组件和字体等所有类型资源
创建分支
-
文件——>项目设置——>项目分支——>点击加号创建分支(建议用英文名)
创建完成后,在工程文件夹下会多出一个assets_分支名
的资源文件夹
菜单的工具栏可以进行分支切换
在这里切换分支
-
在工具栏切换到对应分支,然后在你想要创建的包上点击右键,选择创建分支
创建完成后,在assets_分支名
文件夹中会多处一个包目录
观察文件夹后,你会发现分支机制的体现:UI分支不包含主干的资源,它只放置与主干有差别的内容
分支资源映射
你可以随意的像之前一样往分支包中放入资源或者复制粘贴资源,没有任何限制
按照分支的机制,分支和主干的资源只要路径和名称完全一致,他们就会自动建立一个映射关系
-
同路径同名资源的自动映射关系 (注意:文件路径和文件名一定要一致)
因此在主分支下的bk图片,到了Test分支会自动切换为分支中的bk图片
-
同路径同名组件的自动映射关系 (注意:组件本身不会相互切换,只有当在其他组件中使用映射组件时才会有效果)
或者说,打开主分支的 与另一个分支具有映射的 组件,即使当前的编辑器选择的不是主分支,显示也依然是主分支的组件
只有打开另一个使用了 与另一个分支具有映射的组件 的组件,此时切换分支,才能看到不同分支带来的组件的变化
-
删除分支映射资源后,会自动切换回主干资源
(注意:主干和分支的关系是弱连接,如果这种连接关系存在,则分支起作用;如果不存在,是不会影响主干的内容的)
分支和控制器配合
组件分支在使用上相对比较麻烦,比如每次界面需要修改时,同步修改所有分支组件会比较麻烦
对于分支界面的小差异,我们可以利用控制器中的 首页与分支名称匹配的功能 进行分支界面调整
-
为一个组件添加一个控制器
-
控制器首页设置为:匹配分支名称
-
在对应索引页面填写分支名称
两个元件设置不同分支下都可见,添加不同分支位置改变的属性控制
然后,在另一个分支对应的控制器索引处,交换两者位置
设置完毕后,切换分支,就会自动切换组件的控制器索引,达到不同分支下显示不同的目的
发布分支
发布设置中关于分支的发布主要有以下几个选项:
-
主干包含所有分支(适用于不同分支的各个组件只有显示上的不同的情况)
发布结果包含主干以及所有分支的内容,发布的内容放置在“发布路径”,而非“分支发布路径”
使用这种处理方式,可以在运行时再决定切换到哪个分支例如主干有一个face.png,分支en也有一个face.png
那么发布结果就含有两个face.png运行时实际显示哪个图片,由代码设置的活跃分支名称决定
一般不想分工程时可以选择这种模式,适用于 游戏只有部分面板针对不同平台显示不同,其它都一样 -
主干合并活跃分支(适用于多工程对应不同分支UI资源的情况)
发布结果包含主干合并当前活跃分支后的内容,也就是说,无论当前分支是什么,发布结果首先都包含所有主干的内容
然后查看哪些资源有分支映射关系的,就用分支的代替主干的
当主工具栏上分支的设置为主干时,发布出来的结果放置在“发布路径”
当设置为某个分支时,发布出来的结果放置在“分支发布路径/分支名称”。
例如主干有一个face.png,分支en也有一个face.png
如果主工具栏上分支的设置为主干,那么发布出来的结果放置在“发布路径”,包里的face.png是主干的face.png
如果主工具栏上分支的设置为en,那么发布出来的结果放置在“分支发布路径 / en”,包里的face.png是分支en里的face.png。这种比较适用于多工程对应不同UI资源, 适用于 多语言版本,几乎所有界面都要变化,那么肯定得分工程处理较好
-
每个分支使用独立的纹理集(选择主干包含所有分支才会出现)
当不同分支中图片不多时,我们可以不选择该项,因为减少纹理集的加载可以减少内存的占用
当不同分支中几乎每个图片都有不同的映射时,就可以选择该项
因为这种情况下不同分支可能只会加载对应的纹理集,而不需要加载另外分支的纹理集,进而减少内存占用
Unity中的修改分支
设置分支,通过UIPackage.branch
设置分支
注意:设置分支一定是在创建UI之前
1 | void Start() |
显示效果(与主分支不同):