LayoutElement:Layout模式下子元素大小设置。
HorizontalLayout:横向自动排版模式,有容器框概念,能自动比例拉伸缩放、填充等。
VerticalLayout:纵向自动排版模式,同上。
GridLayout:横纵组合格子排版模式,无容器框概念,只做排版,格子子元素大小需一致。
之前的一些想法:
现在grid有几个不一样的:
1.不参与拉伸、压缩模式,即只做位置排版,不做容器框的功能,如果要做范围模式,可以加上mask,如果要做容器框模式,可以扩展屏蔽格子模式到单独的layout模式。
2.grid当前采用的子元素统一大小模式,如果子元素可大小不一致,实际只要统计每行列最大高度宽度即可,类似图文混排中要考虑的,自动压缩模式则自动按照行列子元素比例压缩,同单layout
以上只是全都综合一起底层太复杂,但是感觉上使用的话会简单,先从功能模块提供选项,比如单行列layout、行列组合layout,自动元素大小(或固定大小)、自定义元素大小(所有大小都是操作子元素的自定义大小,同LoutElement,上层只是做设置,最后只做排版),自动填充(容器框,此时同自动元素大小,并支持边界设置)、只排版(无容器框),整体布局、子元素布局,行列间隔
1.不参与拉伸、压缩模式,即只做位置排版,不做容器框的功能,如果要做范围模式,可以加上mask,如果要做容器框模式,可以扩展屏蔽格子模式到单独的layout模式。
2.grid当前采用的子元素统一大小模式,如果子元素可大小不一致,实际只要统计每行列最大高度宽度即可,类似图文混排中要考虑的,自动压缩模式则自动按照行列子元素比例压缩,同单layout
以上只是全都综合一起底层太复杂,但是感觉上使用的话会简单,先从功能模块提供选项,比如单行列layout、行列组合layout,自动元素大小(或固定大小)、自定义元素大小(所有大小都是操作子元素的自定义大小,同LoutElement,上层只是做设置,最后只做排版),自动填充(容器框,此时同自动元素大小,并支持边界设置)、只排版(无容器框),整体布局、子元素布局,行列间隔
所有模式都是先设置或算好子元素的大小,上层只根据最后的大小排版。
如果自动模式下,上层通知下层调整大小,最后再让上层排版。
第1种完全没问题,复杂的是第2种,如果容器框600,5个子元素,按照比例的话,应该每个120,但是子元素LayoutElement说前3个100,后三个说120,那么不能上层把下层都设置为120,要按照比例来,但是如果有人有需求就是要全部一样,这时只需要在该模式下添加子元素是否统一大小即可,但是最后设置都是设置子元素的LayoutElement,所以这个值应该放在子元素上,这样子元素就可以自己定义到底是用自己的大小来算比例还是用上层分给的大小,上层的话则可以使用统一模式全部设置用子元素自己的设置还是用统一大小
还有1个可以补充就是:子元素的大小,决定上层layout的大小,这时只要上层加上选项就行。如果子元素决定上层大小模式,那么开放子元素行列值,然后把子元素根据序号行列话,然后算出,每行列最大高宽(暂时是行列可以不等长),加上间隔,然后排版,最后算出排版后的整体宽高给上层 。这样可以自动拉伸grid模式下的背景图等。
ugui排版设计是你需要先想好到底要怎样布局,然后采用对应的模式,当然这样利于结构、逻辑的简化和职责的专一化。
不过实际使用中,可能经常调整方案,或者逻辑上需根据不同情况有不一样的排版,当然职责分开也可以,就是要多写点布局结构转换的逻辑。
从设计原则上的话,也本应该遵循UGUI的简单布局模式,不能布局N个变化,只是大家总是想一个东西解决所有问题。
不过实际使用中,可能经常调整方案,或者逻辑上需根据不同情况有不一样的排版,当然职责分开也可以,就是要多写点布局结构转换的逻辑。
从设计原则上的话,也本应该遵循UGUI的简单布局模式,不能布局N个变化,只是大家总是想一个东西解决所有问题。