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