UGUI技术之LayoutGroup布局实现详解

继续学习unity4.6,unity的LayoutGroup分为三种, Horizontal Layout Group(水平布局)Vertical Layout Group(垂直布局)Grid Layout Group (网格布局) 以前NGUI没有这东西都是自己写工具实现的。为什么我们要布局?我举个例子,布局的时候可以两个cell 和三个cell都居中显示。如下图所示。。





尤其在奖励窗口,因为获取道具的数量是不固定的,所以需要根据不同数量的道具来居中对齐。如下图所示,Padding 就是偏移,因为我的cell 是 95X95,为了居中所以这里设置成 right = -95 top = -95。
Spacing 表示 cell之间的距离。
Child Alignment 表示对齐方式。
Child Force Expand 表示 自适应 宽 和高



在看看cell,注意Layout Group节点下面的所有cell节点都是不能修改Rect Transform的。因为cell可能下面会放很多图片,这样我们会用个空的gameObject来当父节点。但是这个gameObject的width 和 height 是最小单位,那么Layout Group就不知道怎么来算居中了。如下图所示 这个时候就轮到LayoutElement登场了, 用它来设置一个cell的最大或者最小宽度。



如果运行时实例化后的gameObject 直接放在 Layout Group下面即可。Layout Group会自动计算布局,真的是非常方便。

for ( int  i  = 0  ; i  < 10 ; i ++ ) {
GameObject  go  =  ( GameObject ) Instantiate ( Resources . Load < GameObject > ( “item” ) ) ;
go . transform . parent  =  transform ;
go . transform . localScale  =  Vector3 . one ;
}

还有个问题就是隐藏,比如把其中的一个cell setActive = false ,为了不计算隐藏的cell 所以要先把 IngonreLaytout = true 再 setActivity = false  这一切都可以在代码里面来设置。



 

代码这样即可。

gameObject . GetComponent < LayoutElement > ( ) . ignoreLayout  =  true ;
gameObject . SetActive ( false ) ;

转载于:https://www.cnblogs.com/nafio/p/9137339.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity的UGUI(Unity Graphic User Interface)布局是通过RectTransform组件来实现的。RectTransform是一种特殊的Transform组件,它可以控制物体在屏幕上的位置、大小和旋转。 UGUI布局主要有以下几种方式: 1. 相对位置布局:使用锚点(Anchor)来设置物体相对于父级容器的位置。通过设置锚点的最小和最大值来确定物体的偏移位置,使用比例来自动适应不同屏幕分辨率。 2. 绝对位置布局:直接设置物体的位置坐标(position)来确定其在屏幕上的绝对位置。这种布局方式在需要精确控制物体位置时比较常用。 3. 自动布局:通过使用Layout组件(如Vertical Layout Group、Horizontal Layout Group)来实现物体的自动排列布局Layout组件会根据子物体的尺寸和间距来自动调整其位置和大小,使它们适应容器的尺寸。 4. 网格布局:使用GridLayout Group实现物体的网格布局,可以设置行数、列数、间距和边界等参数来控制物体的位置和排列方式。 在使用Unity控制UGUI布局时,可以通过代码或者编辑器来进行设置。在代码中,可以获取RectTransform组件并通过设置其属性来控制物体的位置、大小和旋转。在编辑器中,可以直接在Inspector面板上通过拖拽和调整参数来实现布局控制。 UGUI布局的设计原则是灵活性和可适应性,可以根据不同的需求和场景来选择合适的布局方式。同时,还可以结合动画效果和事件系统来实现更复杂的交互和界面效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值