用户工具

站点工具


ui_variant

UI预制体复制变种

通常UI预制体的名字和它的 E_PANEL_TYPE, 代码都是一一对应关系,

PanelMain 预制体的 E_PANEL_TYPE.PanelMain, 代码就是PanelMainBinder 和 PanelMainHolder

但是如果预制体公用同一套Binder代码,我们通常的做法是复制一个新的Panel,然后改名以后重新生成枚举/holder/binder,并且把公共的代码写在UIFeature中,这个做法是完全正确没有问题的。

但如果有较多预制体想共享一份代码,一种做法是UICInventory这样的全局通用控件

另外一种就是我们这里提到的一种变种体做法。

生成变种体

变种体由主体复制,并修改里面的表现元素而成,但是他们拥有相同的控件表现

生成一个新的变种体只需要两步

1/ 从主体复制并修改名称,命名规范是使用下划线 比如ABC 的变种是 ABC_XXXX

同样需要注意,如果是非变种体,请严格使用大小写命名而不是下划线

2/ 修改Mode为VARIANT, 然后点 “保存变种体”

变种体的保存目录在Resources/Prefab/UI/Variant/中 区别于普通的Resources/Prefab/UI/

代码中使用变种体

相关代码主要在UIPool.cs中,考虑到参数传递深度太深的问题,直接采用了全局设置下一个为变种体的方法(用构架复杂度换取代码复杂度)

UIPool.instance.SetVariant("XXXX");//设置下次价值Holder的时候为后缀为XXXX的变种体,参数不需要下划线
 
UIHub.Load<PanelAbcBinder>();//和正常一样 加载页面, 加载到的时PanelAbc_XXXX的预制体,并且绑定还是PanelAbcBinder

注意:UIPool.instance.SetVariant(“XXXX”) 在下一次Load之后就会失效,而且如果不执行Load会影响其他Load,一定要组合使用以上代码。

变种体的应用场景

* 技能演出/结果的 大量复制

* 马甲包

* 快速换皮

ui_variant.txt · 最后更改: 2019/01/19 20:33 由 shenmo